如何让Solr返回带准确搜索结果数的自动补全建议?
关于Solr v9.5自动补全返回准确结果数的解决方案咨询
我搭建了Solr v9.5服务用于搜索终端用户内容,尝试了三种可显示建议对应结果数的自动补全实现方案,各有不足:
方案A:自定义整合字段+常规查询
- 优点:返回的建议与索引文档高度相关
- 缺点:需为每个建议发起常规查询并解析
numFound获取结果数,耗时过长
方案B:使用Solr Suggester组件
- 优点:专为自动补全设计
- 缺点:官方文档未提及支持返回每个建议的结果数
方案C:使用Solr Terms Component组件
- 优点:一次操作返回匹配项和计数
- 缺点:计数与实际搜索结果数不符
方案C测试详情
当terms.fl字段与常规搜索的qf字段匹配时,提交的查询为:
http://localhost:8983/solr/my_core/terms?wt=json&terms.limit=-1&terms.regex.flag=case_insensitive&terms.fl=title_list&terms.fl=topic_list&terms.fl=summary&terms.fl=category_name_list&terms.fl=genre&terms.fl=skill_list&terms.fl=skill_type_list&terms.fl=search_terms&terms.fl=landing_page_keyword&terms.fl=language_name&terms.regex=.*canada.*
得到的Solr响应:
{ "responseHeader":{ "status":0, "QTime":88 }, "terms":{ "title_list":[ "canada",12 ], "topic_list":[ "canada",52 ], "summary":[ "canada",32, "canada,",10, "canada.",10 ], "category_name_list":[], "genre":[], "skill_list":[], "skill_type_list":[], "search_terms":[ "canada",7, "canada,",7 ], "landing_page_keyword":[], "language_name":[] } }
方案C的问题分析
常规搜索"canada"时实际有71条结果,但上述响应中的计数总和为130(去除"canada,"和"canada."后为103)。推测差异原因是同一文档若在多字段包含该术语,会被Terms Component重复计数。
核心疑问
是否存在方法让Solr返回自动补全术语的同时,附带每个术语对应的准确搜索结果数?我对服务实现有较大调整空间,接受任何非上述方案或特殊配置等解决方法。
内容的提问来源于stack exchange,提问作者landru27
相关产品推荐
相关产品推荐

