如何有效地找到某些文本中提到的所有人,同时容忍拼写错误?

时间:2016-11-15 15:57:56

标签: elasticsearch lucene full-text-search aho-corasick

我有一个数百万知名人士的名单(来自维基数据),我需要创建一个系统,可以在一个相当短的文本中有效地找到所有提到的人:它可以只是一个单词(例如。&#34 ;爱因斯坦")几页文本(例如维基百科页面)。

我需要系统能够相当容忍拼写错误(例如Mikael Jackson而不是Michael Jackson)和简短形式(例如M. Jackson)。如果含糊不清,它应该归还所有可能的人(例如,#34;乔治布什"应该返回父子,可能还有其他同音异义词)。

related question有一些有趣的答案,包括使用Aho-Corasick algorithm。有许多语言的库,包括in Python。但是,它似乎不支持模糊搜索(即容忍拼写错误)。

我想我可以扩展词汇量以包含每个名称的所有可能的拼写,但这会使词汇量太大,所以我宁愿避免这种情况(如果可能的话)(此外,我可能希望将此解决方案扩展到超过只是人们在某一点上。)

我快速浏览了Lucene / ElasticSearch,但它似乎不支持这个用例(除非我错过了它)。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

Elasticsearch支持模糊匹配:请参阅文档here