我剛剛進入了看似簡單卻非常複雜的搜索世界。對於一個應用程序,我需要建立一個搜索機制來搜索用戶的名字。用Apache Solr搜索名字
閱讀大量的帖子和文章,包括後:
How can I use Lucene for personal name (first name, last name) search?
http://dublincore.org/documents/1998/02/03/name-representation/
what's the best way to search a social network by prioritizing a users relationships first?
http://www.gossamer-threads.com/lists/lucene/java-user/120417
Lucene Index and Query Design Question - Searching People
Lucene Fuzzy Search for customer names and partial address
...和其他一些我無法找到-the-時刻。而得到的,至少索引和基本的搜索結果在我的機器上工作,我已經設計了用戶搜索以下方案:
1)具有第一,第二和第三名稱字段和索引的使用Solr
2)使用edismax作爲搜索requestParser多列
3)使用正常化過濾器,如組合:音譯,拉丁到ASCII convesrion等
4)最後用模糊搜索
顯然,是很新的這一點,我我不確定上述是否是最好的方法,並希望聽到有經驗的用戶比我在這個領域有更好的想法。
我需要能夠通過以下方式相匹配的名稱:
1)口音摺疊:喬恩匹配JORN和反之亦然
2)可選拼寫:卡爾匹配卡爾反之亦然
3)縮短交涉(我相信我做這與SynonymFilterFactory):蘇匹配蘇珊等
4)萊文施泰因匹配:JONN匹配約翰等
5)的Soundex匹配:艾琳和艾倫
任何指導意見,批評或合作mments非常受歡迎。請讓我知道,如果這是可能的...或者我只是白日夢。 :)
編輯
我還要補充一點,我也有一個全稱場的情況下,有些人有長的名字,作爲一個例子從職位之一:喬恩·保羅或卡門應也匹配Jon Paul Del Carmen
由於這是一個新項目,因此我可以以任何我認爲合適的方式修改架構和體系結構,因此限制非常有限。
你會試圖在一個時間來解決1個問題得到了最好的結果。 (你可能知道這一點,我只是提醒你;-))...我會嘗試首先解決最簡單的問題。您的列表看起來按照相反的順序排序。我會從#5開始,回到#1。這些問題中的每一個都對S.O.在這裏單獨提出了一個問題最後,我想你會在每個項目主站點的用戶論壇上獲得更好的幫助。幾個月前,我花了幾個小時閱讀apache.org上的lucene論壇,並發現它非常令人鼓舞和啓發。祝你好運! – shellter 2011-04-04 03:44:59
重口音摺疊,據我所知,我並不真正知道瑞典語,但是當你在文本上使用某個語言分析器時,只要在查詢中使用同一個分析器,它就會使索引文件可搜索。儘管關於文本上的語言檢測我並不是很瞭解。 – Joyce 2011-04-04 13:25:41