2013-12-10 129 views
3

我正在使用Solr建議器組件,並且想知道是否可以通過fq參數篩選結果。我有這樣一個查詢:建議者Solr過濾器查詢

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的建議。

所以我的問題是,建議者(或基本上是SpellCheckerComponent)意識到fq參數,以及如何使用此參數來過濾建議(或在以後階段,拼寫更正)。

EDIT

我發現,即「正常」的拼寫檢查組件(例如用類solr.IndexBasedSpellChecker例如),確實採取fq參數考慮在內。我可以設置

<str name="spellcheck.collate">true</str> 
    <str name="spellcheck.collateExtendedResults">false</str> 

和由某一類別ID,其中該關鍵字shirt不存在過濾時,不返回shitr的建議。

我想知道,爲什麼這不適用於建議組件。有任何想法嗎?

回答

1

我不這麼認爲,你需要看看這個有點不同,理解爲什麼。正如您可能已經知道的那樣,SpellChecker基於您在配置中指定的字段構建的字典進行操作。

默認 文本 solr.DirectSolrSpellChecker ...

和複製領域應該化妝索引期間你的字典填補「文本」字段,因此字典。例如:

此時拼寫檢查器不知道建議來自何處。

所以與整理,你可以做的更好一點,你有沒有嘗試&拼寫檢查=真& spellcheck.extendedResults =真& spellcheck.collat​​e =真的嗎?這將確保建議有一些結果。

spellcheck.extendedResults,提供有關建議的其他信息,如索引中的頻率(點擊),這可能會幫助您進行邏輯處理。

+0

感謝您的回答。 'extendedResults'值是否考慮了'fq'值?比方說,我按類別1過濾我的查詢,建議者返回一些值,但是'extendedResults'字段表示,不存在您當前查詢的任何值嗎? – 23tux