我正在为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/