如何使用Lucene进行个人姓名(名字,姓氏)搜索?

时间:2010-05-07 18:44:49

标签: lucene

我正在为NFL球员的数据库编写搜索功能。

用户输入搜索字符串,例如“Jason Campbell”“Campbell”“Jason”

我无法获得适当的结果。

索引时我应该使用哪个Analyzer?查询时Query哪个?我应该区分名字和姓氏还是只索引全名字符串?

我想要以下行为:

查询“Jason Campbell” - > 结果:1名球员Jason Campbell完全匹配

查询“Campbell” - > 结果:所有名为Campbell的玩家

查询“Jason” - > 结果:所有以杰森名字命名的球员

查询“Cambel” [拼写错误] - > 结果:所有名为Campbell的玩家

1 个答案:

答案 0 :(得分:4)

StandardAnalyzer应该适用于所有上述查询。您的第一个查询应该用双引号括起来进行完全匹配,最后一个查询需要模糊查询。例如,您可以设置Cambell~0.5并且您可以将Campbell设置为匹配(波形符之后的数值表示模糊)。

BTW我建议使用Solr,它提供拼写检查和自动建议功能,因此您不必重新发明轮子。这类似于Google的“你的意思......”