我是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名称“。
我发现this和this的帖子出现了类似的错误,但这两篇帖子都是关于建议的。字典没有配置,而我的情况并非如此。
任何帮助我做错事的人都非常感激。
1条答案
按热度按时间qpgpyjmq1#
一个SuggestComponent可以使用多个字典,因此必须在列表中定义它们,并为每个字典明确指定一个
name
。还要注意
buildOnStartup
需要一个字符串。可以使用
.../suggest?suggest.dictionary=fuzzy&q=J&suggest.build=true
查询