我浏览了所有现有的问题帖子,但找不到相关的内容。
我有数百万条记录,包括个人名字、姓氏、地址 1、地址 2、国家/地区代码、出生日期 - 我想每天使用上述文件检查我的客户列表(我的客户列表也会每天更新,并且文件也每天更新)。
对于名字和姓氏,我想要模糊匹配(可能是 lucene fuzzyquery/levenshtein 距离 90% 匹配),对于剩余字段国家/地区和出生日期,我想要精确匹配。
我是 Lucene 的新手,但通过查看帖子数量,看起来这是可能的。
我的问题是:
- 我应该如何索引我的输入文件?我需要在 FN、LN、国家、DOB 的组合上建立索引并使用该索引进行搜索
- 我这里如何使用Lucene的模糊查询?
还有其他方法可以实现相同的功能吗?
Rushik,这里有一些想法:
- 考虑使用Solr http://lucene.apache.org/solr/。开始使用它比裸露的 Lucene 容易得多。
- 构建文件的 Lucene/Solr 索引。如果您使用多值字段或两个不同的地址字段,则每个客户一个文档似乎就足够了。
- 每个人都有唯一的 ID 吗?要使用 Solr,您需要一个。在 Lucene 中,您无需使用唯一 id 即可逃脱。
- 将国家/地区代码存储为“关键字”。如果您只需要出生日期完全匹配,您也可以这样做。对于范围查询,您将需要另一种表示形式。
- 我假设您的客户列表比文件小。一个可能的策略是每天索引文件中的更改(这里唯一的 id 非常方便 - 否则您需要通过查询删除,这可能会错过标记)。然后您可以优化索引,然后搜索更新的客户列表。
- 你所描述的是一个布尔查询 http://lucene.apache.org/java/3_0_1/api/core/org/apache/lucene/search/BooleanQuery.html,其子句是名字和姓氏的模糊查询以及其他字段的术语查询。您可以通过编程方式或使用查询解析器 http://lucene.apache.org/java/3_0_2/queryparsersyntax.html.
- 考虑使用 soundex 作为名称,如上所述here http://sujitpal.blogspot.com/2007/12/spelling-checker-with-lucene.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)