suggester的Solr筛选器查询

suggester的Solr筛选器查询,solr,lucene,autosuggest,spelling,search-suggestion,Solr,Lucene,Autosuggest,Spelling,Search Suggestion,我正在使用Solr Suggester组件,我想知道是否可以通过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\u id:321

我正在使用Solr Suggester组件,我想知道是否可以通过
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\u id:321对其进行筛选,这样我就不会从其他类别获得建议。由于具有
类别id:321
的类别没有任何与
衬衫相关的产品,因此它不应返回任何建议。但确实如此。当试图搜索该建议时,它什么也找不到,因为“原始”搜索是用
fq=…
参数过滤的

我在这里找到了一些有
collate
的东西。它整理我的结果,但也返回对
衬衫的建议

所以我的问题是,建议者(或者基本上是拼写检查组件)是否知道fq参数,以及我如何使用此参数过滤建议(或者在稍后的阶段,拼写更正)

编辑

我发现,“正常”拼写检查组件(例如带有类
solr.IndexBasedSpellChecker
)确实考虑了
fq
参数。我可以设定

   <str name="spellcheck.collate">true</str>
   <str name="spellcheck.collateExtendedResults">false</str>
true
假的
当按某个类别id进行过滤时,如果关键字
shirt
不存在,则不会返回对
shitr
的建议


我想知道,为什么这不适用于建议组件。有什么想法吗?

我不这么认为,你需要从不同的角度来理解原因。正如您可能已经知道的,拼写检查器基于从配置中指定的字段构建的字典进行操作

违约 文本 solr.DirectSolrSpellChecker

在索引过程中,应该构成词典的复制字段填充“文本”字段,从而填充词典。 例子:

此时,拼写检查器不知道该建议来自何处

因此,使用排序规则,您可以做得更好一些,您是否尝试过&spellcheck=true&spellcheck.extendedResults=true&spellcheck.collate=true?这将确保该建议具有一定的效果


spellcheck.extendedResults提供有关建议的其他信息,如索引中的频率(点击次数),这可能有助于您的逻辑。

谢谢您的回答。
extendedResults
值是否考虑了
fq
值?比方说,我按类别1筛选查询,建议者返回一些值,但是
extendedResults
字段说,不,当前查询没有任何值?