Lucene模糊搜索客户名称和部分地址

时间:2010-12-08 03:20:31

标签: lucene fuzzy-search

我正在通过所有现有的问题帖子,但无法获得相关的东西。

我的文件包含数百万条人名,姓氏,地址1,地址2,国家代码,出生日期的记录 - 我想每天查看我的客户名单(我的客户名单也可以获得)每日更新,文件也每天更新)。

对于名字和姓氏,我想模糊匹配(可能是lucene fuzzyquery / levenshtein距离90%匹配),对于剩余字段国家和出生日期,我想要完全匹配。

我是Lucene的新手,但通过查看帖子的数量,看起来很可能。

我的问题是:

  • 我应该如何索引输入文件?我需要在FN,LN,country,DOB的组合上构建索引并使用索引进行搜索
  • 如何在这里使用Lucene的模糊查询?

还有其他方法可以实现吗?

2 个答案:

答案 0 :(得分:4)

Rushik,这里有一些想法:

  • 考虑使用Solr。开始使用它要容易得多,而不是露出Lucene。
  • 构建文件的Lucene / Solr索引。如果您使用多值字段或两个不同的字段用于地址,则每个客户的文档似乎就足够了。
  • 你是否每个人都有一个独特的身份证?要使用Solr,您需要一个。在Lucene,您可以在不使用唯一身份证的情况下离开。
  • 将国家/地区代码存储为“关键字”。如果您只需要与出生日期完全匹配,您也可以这样做。对于范围查询,您将需要另一个表示。
  • 我假设您的客户列表小于文件。一个可能的策略是每日索引文件中的更改(这里一个唯一的ID非常方便 - 否则你需要通过查询删除,这可能会错过标记)。然后,您可以优化索引,然后运行搜索更新的客户列表。
  • 您描述的是BooleanQuery,其子句是对其他字段的名字和姓氏以及术语查询的模糊查询。您可以使用query parser
  • 以编程方式创建查询
  • 考虑使用soundex表示here所述的名称。

答案 1 :(得分:2)

有关此主题的一些学术论文非常值得一读(谷歌免费提供PDF文件):

  • 个人姓名匹配比较:技术与实际问题(2006)
  • 记录联系和当前研究方向概述(2006)
  • 并行开源数据链接系统(2004)

您还应该考虑以下库/框架:

(未来访客已回答。)