我對Solr比較新,所以請原諒我,如果我失去了一些明顯的東西。我有一個允許用戶搜索音樂藝術家的應用程序。索引來自一個只讀數據庫,正確的拼寫,所以在索引方面,我已經想通了。solr PatternReplaceCharFilterFactory意外工作
在查詢方面,但我需要預測各種拼寫錯誤/差異,並希望幫助solr找到這些實例。從我們的老本土搜索解決方案中,我列出了正則表達式和他們應用的藝術家。當我試圖使用PatternReplaceCharFilterFactory將它們翻譯成solr時,我注意到一些完美的工作,而另一些完全沒有工作...在他們之間看起來沒有韻律和理由。
例如:
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="em[ei]n[ei]m" replacement="Eminem"/>
準確地抓住阿姆的常見的拼寫錯誤。但對於樂隊311:
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="[Tt]hree [Ee]leven" replacement="311"/>
不起作用。另一個例子是九英寸的指甲:
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="((nine|9).*inch.*nails\b)|(n\.? ?i\.? ?n\.?\b)" replacement="Nine Inch Nails"/>
完美的找到樂隊的名字最常見的模式。但對於夏娃6:
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="[Ee]ve.{0,4}([Ss]ix|6)" replacement="Eve 6"/>
有沒有什麼根本我失蹤了這個過濾器的使用?我已經嘗試了上面提到的正則表達式的一些變體(甚至使用'三十一'等文字),但仍然沒有成功。我已經嘗試過濾器是分析器中唯一的PatternReplaceCharFilterFactory。我也確切地知道這些項目在索引中是正確的,因爲當我搜索正確的拼寫時,它會返回正確的結果。
有什麼建議嗎?
Snowdall