這需要一些解釋,但我認爲這個討論可以幫助任何人在Solr索引中使用重要短語。整理短語拼寫檢查結果Solr
我正在使用Solr在電子商務環境中進行搜索,並試圖改進品牌名稱的拼寫檢查建議。默認情況下,Solr會單獨檢查每個單詞,而不考慮結果詞組是否有意義。例如,搜索「paula dean」會帶回「您的意思是:paula bean?」,而品牌名稱實際上是「Paula Deen」。目前,我的拼寫字典是一個名爲spellField的空白標記字段。爲了爲拼寫檢查指定完整的品牌名稱,我從我的數據庫的品牌名稱中使用我的Solr導入替換空格,即下劃線,即Entree Casual Dining - > Entree_Casual_Dining。下面是spellField的字段類型的模式:
<fieldType name="spellcheckquery" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.PatternReplaceFilterFactory" pattern="(\s[0-9]+\s)|(^[0-9]+\s)|(\s[0-9]+$)|(^[0-9]+$)" replacement="" replace="all"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.PatternReplaceFilterFactory" pattern="(\s[0-9]+\s)|(^[0-9]+\s)|(\s[0-9]+$)|(^[0-9]+$)" replacement="" replace="all"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ShingleFilterFactory" minShingleSize="2" maxShingleSize="4" outputUnigrams="true"/>
</analyzer>
</fieldType>
把下劃線的品牌名稱是我能想到的,以保持多字的品牌視爲單個標記的空白標記化領域的最佳途徑。在返回後,我可以輕鬆地刪除下劃線的返回拼寫建議。因此,現在,當查詢進入時,Solr對查詢進行了細化處理,併爲每個拼圖尋找拼寫建議,即搜索拼寫錯誤的品牌:「entre casual dining」 - >「entre」,「casual」,「餐飲「,」休閒娛樂「,」休閒餐飲「,」休閒餐飲「。 「entre_casual_dining」這個牌子的「entre_casual_dining」類似於索引中的內容(「Entree_Casual_Dining」),因此建議。大。
假設查詢包含品牌名稱和產品類型,如「entre casual dining table set」。我們希望找到品牌名稱的拼寫更正並替換整個拼寫錯誤的品牌以返回「entree_casual_dining表格集」建議。我認爲Solr的整理功能可以很好地處理這個問題。當我進入這個搜索,不過,Solr的找到正確的品牌的建議,但它不整理它放回結果:
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">48</int>
</lst>
<result name="response" numFound="100" start="0"/>
<lst name="spellcheck">
<lst name="suggestions">
**<lst name="entre casual dining">**
<int name="numFound">1</int>
<int name="startOffset">0</int>
<int name="endOffset">19</int>
<int name="origFreq">0</int>
<arr name="suggestion">
<lst>
**<str name="word">entree_casual_dining</str>**
<int name="freq">21</int>
</lst>
</arr>
</lst>
<bool name="correctlySpelled">false</bool>
**<str name="collation">entre casual dining table set</str>**
</lst>
</lst>
</response>
它有沒有問題整理時校正從一個單一的拼寫錯誤的單詞查詢出來。例如,如果拼錯「表」,它會將它整理回查詢中。
當它試圖整理來自多字詞拼圖的建議時會發生什麼問題?
確實,有一些意想不到的行爲。你認爲有什麼方法可以在我的拼寫檢查字段中放置完整的品牌名稱標記,而該字段中的其他條款是用空格標記的?你能舉出一個Solr整理多詞關鍵詞的例子嗎?感謝您的答覆! – 2012-04-03 13:31:42