我正在尝试实施的搜索遇到一些麻烦。我需要用户能够将搜索查询输入到Web界面中,并且后端Java需要在许多字段中搜索查询。这方面的一个例子可能是最好的:
假设我有一个包含“Person”对象的List。假设每个对象包含关于此人的两个字符串字段:
FirstName: Jack
Surname: Smith
FirstName Mary
Surname: Jackson
如果用户输入“jack”,我需要搜索以匹配两个对象,第一个在Surname上,第二个在FirstName上。
我一直在考虑使用MultiFieldQueryParser,但无法正确设置字段。任何帮助或指向一个好的教程将不胜感激。
答案 0 :(得分:3)
MultiFieldQueryParser
就是你想要的。
确保:
Analyzer
jack
,您将找不到jackson
。 (在这种情况下,您可以搜索jack*
。)关于字段名称,我总是为我的字段名称设置enum
,然后使用例如将字段名称传递给Lucene时MyFieldEnum.firstname.name()
,如果我犯了拼写错误,编译器就可以捕获它,而且它也是放置Javadoc的好地方,这样你就可以看到字段的用途,还有一个地方您可以在Lucene文档中看到您希望支持的完整列表。