我正在为NFL球员的数据库编写搜索功能。
用户输入搜索字符串,例如“Jason Campbell”或“Campbell”或“Jason”。
我无法获得适当的结果。
索引时我应该使用哪个Analyzer
?查询时Query
哪个?我应该区分名字和姓氏还是只索引全名字符串?
我想要以下行为:
查询:“Jason Campbell” - > 结果:1名球员Jason Campbell完全匹配
查询:“Campbell” - > 结果:所有名为Campbell的玩家
查询:“Jason” - > 结果:所有以杰森名字命名的球员
查询:“Cambel” [拼写错误] - > 结果:所有名为Campbell的玩家
答案 0 :(得分:4)
StandardAnalyzer应该适用于所有上述查询。您的第一个查询应该用双引号括起来进行完全匹配,最后一个查询需要模糊查询。例如,您可以设置Cambell~0.5并且您可以将Campbell设置为匹配(波形符之后的数值表示模糊)。
BTW我建议使用Solr,它提供拼写检查和自动建议功能,因此您不必重新发明轮子。这类似于Google的“你的意思......”