我正在使用Solr建议器组件,并且想知道,结果是否可以通过fq
参数进行过滤。我有这样的查询:
http://localhost:8982/solr/core1/suggest?q=shirts&fq=category_id%3A321&wt=json&indent=true&spellcheck=true&spellcheck.build=true
在这里,我尝试为q=shirts
提供一些建议。我希望按fq=category_id:321
过滤此内容,以便我不会从其他类别中获得建议。由于category_id:321
的类别没有与shirts
相关的任何产品,因此不应返回任何建议。但确实如此。在尝试搜索该建议时,它找不到任何内容,因为“原始”搜索会使用fq=...
参数进行过滤。
我在collate
http://wiki.apache.org/solr/SpellCheckComponent#spellcheck.collate发现了shirts
。它会整理我的结果,但也会返回solr.IndexBasedSpellChecker
的建议。
所以我的问题是,推荐者(或基本上是SpellCheckerComponent)是否知道fq参数,以及如何使用此参数来过滤建议(或在稍后阶段,拼写更正)。
修改
我发现,“普通”拼写检查组件(例如,使用类fq
)确实考虑了 <str name="spellcheck.collate">true</str>
<str name="spellcheck.collateExtendedResults">false</str>
参数。我可以设置
shitr
并且按特定类别ID进行过滤时,不会返回shirt
的建议,其中关键字{{1}}不存在。
我想知道为什么这不适用于建议组件。有什么想法吗?
答案 0 :(得分:1)
我不这么认为,你需要对此有所不同,以了解原因。您可能已经知道,SpellChecker基于您在配置中指定的字段构建的字典进行操作。
默认 文本 solr.DirectSolrSpellChecker ...
在索引编制期间应该构成字典的复制字段填充“text”字段,从而填充字典。 示例:
此时拼写检查器不知道该建议的来源。
所以通过整理你可以做得更好,你试过&amp; spellcheck = true&amp; spellcheck.extendedResults = true&amp; spellcheck.collate = true?这将确保建议有一些结果。
spellcheck.extendedResults,提供有关建议的其他信息,例如索引中的频率(命中),这可能对您的逻辑有帮助。