分析Solr Suggestor中的InfixLookupFactory实现不返回建议结果

ymzxtsji  于 2022-11-23  发布在  Solr
关注(0)|答案(1)|浏览(112)

我的需求是根据用户的项目为他们提供资产名称的自动建议。我已经尝试使用AnalyzingInfixLookupFactory and BlendedInfixLookupFactory,因为它们是唯一支持上下文过滤的。但是没有返回建议结果。下面是solrconfig.xml的摘录:
<searchComponent name="suggest" class="solr.SuggestComponent">
<lst name="suggester">
<str name="name">mySuggester</str>
<str name="lookupImpl">AnalyzingInfixLookupFactory</str>
<str name="dictionaryImpl">DocumentDictionaryFactory</str>
<str name="field">assetname_str</str>
<str name="indexPath">/home/suggest_index</str>
<str name="contextField">projectid</str>
<str name="weightField">weight</str>
<str name="suggestAnalyzerFieldType">string</str>
<str name="buildOnStartup">false</str>
<str name="buildOnCommit">false</str>
</lst>
x1米15英寸
<requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
<lst name="defaults">
<str name="suggest">true</str>
x1米19英寸1x
x1米20英寸
</lst>
<arr name="components">
<str>suggest</str>
</arr>
x1米25英寸
但是,如果我尝试使用FuzzyLookupFactory作为查找Impl,则会按预期返回建议结果。(但问题是Fuzzylookupfactory不支持上下文过滤)
使用的网址:http://ipaddress:port/solr/集合名称/sugggest?suggest=true& sugest.build=true& sugest.dictionary=我的建议&wt=json& sugest.q=Com& sugest.cfq= 1234

yxyvkwin

yxyvkwin1#

(我知道这是一个老问题,但万一别人偶然发现它与同样的问题...)
我花了几天的时间来处理同样的空结果,你没有说你用什么类型的字段作为建议的材料,你把suggestAnalyzerFieldType设置为string
默认情况下,string是一个fieldType,没有分析许多现成的schema.xml示例。一个关键概念(在Solr手册的Suggester文档中只是模糊地暗示了这一点)是AnalyzingInfixLookupFactoryBlendedInfixLookupFactory这样的lookupImpls可以接受一个suggestAnalyzerFieldType,它不是您从中生成建议的字段的类型,而是 * 需要 * 一个包含适当分析器元素的类型,例如建议所需的solr.WhiteSpaceTokenizer
在我的例子中,我试图从一个多值字符串字段进行建议--我希望该字段没有标记化。但是直到我将suggestAnalyzerFieldTypestring更改为text_ws(fieldType的分析器只有sole.WhiteSpaceTokenizer),我得到了空结果。
值得注意的是,如果您使用多值字符串字段作为建议,并且许多文档在该字段中包含相同的字符串值,那么BlendedInfixLookupFactory似乎会产生更好的结果,并且不会产生重复的建议。

相关问题