私は 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_id:321
、他のカテゴリからの提案を受けないようにしたい。のカテゴリには にcategory_id:321
関連する商品がないshirts
ため、候補は返されません。しかし、そうです。そして、その提案を検索しようとすると、「元の」検索がfq=...
パラメーターでフィルター処理されるため、何も見つかりません。
collate
ここhttp://wiki.apache.org/solr/SpellCheckComponent#spellcheck.collateで何かを見つけました。私の結果を照合しますが、の提案も返しますshirts
。
したがって、私の質問は、Suggester (または基本的に SpellCheckerComponent) が fq パラメーターを認識しているかどうか、およびこのパラメーターを使用して提案 (または後の段階でスペル修正) をフィルター処理する方法です。
編集
「通常の」スペルチェックコンポーネント(たとえば、クラスsolr.IndexBasedSpellChecker
など)が実際にfq
パラメーターを考慮に入れていることがわかりました。設定できます
<str name="spellcheck.collate">true</str>
<str name="spellcheck.collateExtendedResults">false</str>
shitr
また、キーワードが存在しない特定のカテゴリ ID でフィルタリングする場合、候補は返されshirt
ません。
なぜこれが提案コンポーネントで機能しないのか疑問に思っています。何か案は?