2011-09-20 162 views
3

我想試驗與Solr的模糊匹配。Solr/lucene最大字符模糊匹配

在我提到的「MYNEWORGANIZATION20SEP2011」這個文件索引的first_name字段中 - 實際上這個詞是「My New Organization 20-Sep-2011」,但我刪除了空格和其他字符。

現在上面的單詞(沒有空格)如果我直接搜索查詢「MYNEWORGANIZATION20SEP2011」Solr得到1結果如上文件ID,完美!

但是,如果我從這個字符串中修剪兩個字符,並在查詢如果我提供「MYNEWORGANIZATION20SEP20〜0.8」,我得到0結果。

與主文檔數據我新的查詢MYNEWORGANIZATION20SEP20距離爲2 - 因而%的匹配應> 90%匹配,因此應該還是搜索數據(我的查詢中,我僅指定了80%的比賽

。順便說一句,如果我使用first_name作爲6-7字符,如「rushik」,並提供模糊查詢,如「rushik〜0.75」,則搜索正常並返回數據。 「text_general」 - 使用solr 3.3。

Solr中有模糊搜索的字符限制嗎?它可以是可配置的在哪裏? - 我正在使用默認的solr配置,沒有改變solrconfig.xml中的任何東西

有沒有更好的方式來搜索「My New Organization 20-Sep-2011」像模糊查詢字符串,而無需手動刪除空格。

謝謝, Rushik。

+0

您可以驗證降低所需的相似性是否找到結果? – Xodarap

+0

我驗證,直到0.2,0.1絕對應該匹配,但仍然沒有運氣。 – Rushik

回答

2

什麼是在你的領域做了索引時間分析?
文本通用字段通常會經過空格標記器,停用詞過濾器,單詞分隔符和小寫過濾器,在這種情況下,索引字段是完全不同的。
在編制索引之前,您是否完成了「我的新組織」2011年9月20日 - >「MYNEWORGANIZATION20SEP2011」的轉換?
此外,最重要的模糊搜索不經過查詢時間分析。

您可能希望將字段類型用作字符串或小寫大小寫字段類型,例如

<fieldType name="lowercase" class="solr.TextField" positionIncrementGap="100"> 
     <analyzer> 
     <tokenizer class="solr.KeywordTokenizerFactory"/> 
     <filter class="solr.LowerCaseFilterFactory" /> 
     </analyzer> 
    </fieldType> 

並測試使用小寫的查詢。

+0

是的,轉換我的新組織20-Sep-2011 - > MYNEWORGANIZATION20SEP2011是在編制索引之前完成的(在我的輸入csv文件級別)。我目前的字段都有小寫字母和keywordtokenizer工廠。問題是如果MYNEWORGANIZATION20SEP2011存儲在索引中(標記器不能處理上面字符串中的任何標記),如果我與MYNEWORGANIZATION20SEP〜0.9匹配,是否返回主文檔。 – Rushik

+0

如果您應用了小寫字母過濾器,搜索MYNEWORGANIZATION20SEP將永遠不會返回任何結果。沒有對模糊搜索進行分析。而且,MYNEWORGANIZATION20SEP的百分比在.81左右,所以0.9也不會匹配。試試myneworganization20sep〜0.8 – Jayendra

+0

完美!它的工作..我使用小寫過濾器應用於分析儀,給模糊「我的新組織」正常工作,非常感謝。 – Rushik