我正在玩Apache Solr來爲網站創建搜索功能。 我的設置與默認類型text_it,這是在託管模式中定義如下文本字段:Solr短語查詢忽略停用詞
<fieldType name="text_it" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.ElisionFilterFactory" articles="lang/contractions_it.txt" ignoreCase="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StopFilterFactory" format="snowball" words="lang/stopwords_it.txt" ignoreCase="true"/>
<filter class="solr.ItalianLightStemFilterFactory"/>
</analyzer>
</fieldType>
我的熟食製品的大型數據庫。每個產品都有一個產品類型和生產者的名稱。例如:
- 產品類型:火腿二帕馬,生產者名稱:ABC公司
- 產品類型:布魯二蒙塔爾奇諾,生產者名:釀酒X
- 產品型:布魯二蒙塔爾奇諾,生產者名:釀酒ý
- 產品類型:Miele的二蒙塔爾奇諾,生產者名稱:公司阿爾法
- 產品類型:Lardo 迪 Colonnata,生產者名稱:公司測試
- ...等等
注意這個詞迪被列爲文件stopwords_it意大利的禁用詞。文本。
給記錄上面,如果我不指定字段名稱查詢蒙達奇諾的布魯奈羅,我得到的所有與外地產品類型裏面的字迪記錄。不幸的是結果是一個很大的數字,其中大部分與用戶查詢完全無關。顯然這不是我想要的。
理想情況下,我想只得到2記錄與brunello迪montalcino。這也可以得到miele di montalcino
什麼solr設置將使我能夠實現這一目標?
感謝
Ç
感謝您的回答!你認爲可以避免查詢中的雙引號?我也想處理像 - > miele brunello < - 與雙引號不匹配的查詢。 – Charlie
您可以在請求處理程序中使用dismax和edismax mm參數以及短語提升。 你可以玩短語滑倒(這意味着短語匹配的術語之間的距離容差)。 看看dismax和edismax的詳細頁面! –