解决方案9–错误“未配置名为suggester的建议”

k0pti3hp  于 2022-09-27  发布在  Solr
关注(0)|答案(1)|浏览(166)

我是Solr的新手,正在尝试通过Config API添加Suggest Search组件。
我的Solr 9.0.0设置如下:
1.带有_default配置的bin/solr start -e cloud
1.用e1d1e索引csv
1.将带有POST请求的搜索组件添加到http://localhost:8983/api/collections/collection_name/config

{
  "add-searchcomponent": {
    "name": "suggest",
    "class": "solr.SuggestComponent",
    "lookupImpl": "FuzzyLookupFactory",
    "dictionaryImpl": "DocumentDictionaryFactory",
    "field": "name",
    "suggestAnalyzerFieldType": "string",
    "buildOnStartup": false
  }
}

1.将带有POST请求的请求处理程序添加到http://localhost:8983/api/collections/collection_name/config

{
  "add-requesthandler": {
    "name": "/suggest",
    "startup": "lazy",
    "class": "solr.SearchHandler",
    "defaults": {
                    "suggest": true,
                    "suggest.count": 10
                },
    "components": ["suggest"]
  }
}

这很好,我也很自信。json如下所示:

{
  "props":{"updateHandler":{"autoSoftCommit":{"maxTime":3000}}},
  "searchComponent":{"suggest":{
      "name":"suggest",
      "class":"solr.SuggestComponent",
      "lookupImpl":"FuzzyLookupFactory",
      "dictionaryImpl":"DocumentDictionaryFactory",
      "field":"name",
      "suggestAnalyzerFieldType":"string",
      "buildOnStartup":false}},
  "requestHandler":{"/suggest":{
      "name":"/suggest",
      "startup":"lazy",
      "class":"solr.SearchHandler",
      "defaults":{
        "suggest":true,
        "suggest.count":10},
      "components":["suggest"]}}}

但如果我发送请求http://localhost:8983/solr/collection_name/suggest?suggest.dictionary=suggest&q=J&suggest.build=true,我会收到以下错误:

{
    "responseHeader": {
        "zkConnected": true,
        "status": 400,
        "QTime": 3
    },
    "error": {
        "metadata": [
            "error-class",
            "org.apache.solr.common.SolrException",
            "root-error-class",
            "org.apache.solr.common.SolrException"
        ],
        "msg": "No suggester named suggest was configured",
        "code": 400
    }
}

我可以想象它与搜索组件的命名有关,因为文档中定义了两个不同的名称。有一个“searchComponent名称”和一个“name”参数,但我现在不知道如何操作“searchComponent名称“。
我发现thisthis的帖子出现了类似的错误,但这两篇帖子都是关于建议的。字典没有配置,而我的情况并非如此。
任何帮助我做错事的人都非常感激。

qpgpyjmq

qpgpyjmq1#

一个SuggestComponent可以使用多个字典,因此必须在列表中定义它们,并为每个字典明确指定一个name
还要注意buildOnStartup需要一个字符串。

{
  "add-searchcomponent": {
    "name": "suggest",
    "class": "solr.SuggestComponent",
    "suggester": [{
      "name": "fuzzy",
      "lookupImpl": "FuzzyLookupFactory",
      "dictionaryImpl": "DocumentDictionaryFactory",
      "field": "name",
      "suggestAnalyzerFieldType": "string",
      "buildOnStartup": "false"
    }]
  }
}

可以使用.../suggest?suggest.dictionary=fuzzy&q=J&suggest.build=true查询

相关问题