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

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

我无法获得适当的结果。

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

我想要以下行为:

查询:“ Jason Campbell”->结果:1​​位玩家Jason Campbell完全匹配

查询:“坎贝尔”->结果:所有以坎贝尔命名的球员

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

查询:“ Cambel” [拼写错误]->结果:所有以坎贝尔命名的球员

最佳答案

StandardAnalyzer对于上述所有查询应该都能正常工作。您的第一个查询应使用双引号括起来以进行完全匹配,而最后一个查询则需要模糊查询。例如,您可以将Cambell设置为0.5,然后将Campbell设置为match(波浪号后的数字表示模糊度)。

顺便说一句,我建议使用Solr,它提供了拼写检查和自动建议功能,因此您不必重新发明轮子。这类似于Google的“您是说...”

关于lucene - 如何使用Lucene进行个人名称(名字,姓氏)搜索?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2790908/

10-09 13:47