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

Rus*_*hik 7 lucene fuzzy-search

我正在通过所有现有问题的帖子,但无法得到一些相关的东西.

我有人数名,姓,地址1,地址2,国家代码,出生日期的数百万条记录的文件 - 我想每天检查我的客户名单(我的客户名单也每天更新和文件也每天更新).

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

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

我的问题是:

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

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

Yuv*_*l F 4

Rushik,这里有一些想法:

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