2016-11-15 27 views
1

我有一個名單上有數百萬名着名人物(來自維基數據),我需要創建一個系統,以相當短的文本有效地找到所有人提到的:它可以只是一個詞(例如「愛因斯坦」)到幾頁文字(例如維基百科頁面)。我需要系統對拼寫錯誤(比如邁克爾傑克遜而不是邁克爾傑克遜)和短格式(例如M.傑克遜)相當寬容。如果含糊不清,它應該返回所有可能的人(例如,「喬治布什」應該返回父親和兒子,以及可能的其他同名詞)。如何在發現拼寫錯誤的同時高效地查找某些文字中提及的所有人?

這個related question有一些有趣的答案,包括使用Aho-Corasick algorithm。有許多語言的圖書館,包括in Python。但是,它似乎不支持模糊搜索(即容忍拼寫錯誤)。

我想我可以擴展詞彙表以包含每個名稱的所有可能拼寫,但這會使詞彙太大,所以我寧願儘量避免(如果可能的話)(此外,我可能希望將此解決方案擴展到更多而不僅僅是一個人)。

我快速瀏覽了Lucene/ElasticSearch,但它似乎不支持此用例(除非我錯過了它)。

任何想法?

回答

1

Elasticsearch支持模糊匹配:請參閱文檔here

相關問題