[英]How to use SynonymFilterFactory with ShingleFilterFactory in Solr?
我想要實現的是搜索與“止汗噴霧”,“除臭噴霧”等匹配的“除臭噴霧”。
我正在使用SynonymFilterFactory在索引時間添加除臭劑,除臭劑和止汗劑的同義詞。 我可以看到它在分析儀中正常工作。
之后,我將運行ShingleFilterFactory(maxShingleSize =“ 3”)拆分為單詞組合。 這再次給了我正確的結果,例如分析“測試帶狀短語”得出:
這是期望的結果。 當我將同義詞術語與帶狀皰疹相結合時,問題就來了。 例如,搜索“除臭噴霧”應該給我:
我所有的同義詞。 但是我實際看到的是:
顯然,這也使每個同義詞術語產生了混亂。 我嘗試過交換過濾器工廠的順序,但似乎無法正常工作。 我究竟做錯了什么?
您唯一可以做的就是使用同義詞過濾器而不進行擴展-將所有同義詞縮減為列表中的第一個。 然后,您必須在索引時間以及查詢時間使用它。
這種方法不會導致文檔中描述的問題,因為您還必須在索引上應用過濾器。
請考慮以下情形:
- 帶有“文本”字段的索引,在查詢時它使用SynonymFilter和同義詞TV,Televesion和expand =“ true”
- 數以千計的包含“ text:TV”一詞的文檔
- 幾百個包含術語“ text:Television”的文檔
對text:TV的查詢將擴展為(text:TV text:Television),而較低的text:Television docFreq將為匹配“ Television”的文檔提供比與“ TV”匹配的文檔更高的分數-這可能對客戶有點直覺。 索引時間的擴展(或減少)將導致所有文檔具有相同的idf,而不管原始文本包含哪個術語。
但是,如果您要支持文檔中所述的多字同義詞,仍然可能會遇到問題。
我不知道由同義詞組成的帶狀皰疹是否會以任何方式影響搜索結果,但是如果不是,那么僅花費您的錢就是索引中的額外空間,因此請考慮是否要保留它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.