2012-07-13 161 views
2

多字的方面我想添加允許人們查找潛在的朋友或者通過電子郵件地址(如果有的話)或名字,如果你不這樣做的搜索功能。我目前正在考慮Lucene,但我願意考慮其他解決方案。我想創建一組文檔這樣:模糊搜索在Lucene的

| id | text | text | 
| 1234 | [email protected] | John Doe | 
| 1235 | [email protected] | Jane Doe | 
| 1236 | [email protected] | Madonna | 

(是的,text被多次指定)

這是所有索引與

new IndexWriter(directory, new IndexWriterConfig(Version.LUCENE_40, new KeywordAnalyzer())); 

,然後我做一個搜索:

TopDocs results = mySearcher.search(
    new FuzzyQuery(new Term("text", term), 2, 0), 
    10); 

我可以用電子郵件做搜索就好。搜索[email protected],[email protected]所有的工作。我可以搜索單詞的名稱,如Madonna也很好。但只要我試圖找到多個單詞的名字,它就會崩潰。搜索JohnJane,John DoeDoe都不會返回任何結果。

我很好奇,一個更好的方法(有一個2 - 編輯距離比賽能在多大程度上把我一些明顯的限制),並且還我怎樣才能使多字相匹配的工作。

回答

-1

至於多字的比賽,我想看看你的分析,以及analyze.yes/analyze.no設置你傳遞給每場的每個文件內。

分析儀記號化搜索,但如果你不使用相同的分析實例搜索和索引,你會得到各種奇怪的行爲與空格 - 除其他事項外。

+1

謝謝,但不幸的是,這個建議有點過於籠統,不能真正幫助我...... – 2012-07-21 20:26:11