Java 使用Hibernate搜索和Lucene实现类似Google的搜索

Java 使用Hibernate搜索和Lucene实现类似Google的搜索,java,hibernate,lucene,hibernate-search,Java,Hibernate,Lucene,Hibernate Search,我正在使用Hibernate搜索和Lucene对文档数据库的内容字段进行全文搜索。我有一个搜索文本框,它接受用户查询。我已将搜索修复为基于短语匹配的搜索。我想使用搜索的组合。为了解释我的观点,假设用户想要搜索美国。如果我使用基于短语的搜索,它将给出查询中的每一个匹配项,并忽略美国和美国的单独匹配项。如果搜索到字段匹配,它将获取包含单个查询词的所有结果。我的问题是,如果用户搜索带有引号或任何其他标记的短语,是否有任何直接的方法,hibernate搜索应用基于短语的搜索。另一方面,它检索基于单词的结

我正在使用Hibernate搜索和Lucene对文档数据库的内容字段进行全文搜索。我有一个搜索文本框,它接受用户查询。我已将搜索修复为基于短语匹配的搜索。我想使用搜索的组合。为了解释我的观点,假设用户想要搜索美国。如果我使用基于短语的搜索,它将给出查询中的每一个匹配项,并忽略美国和美国的单独匹配项。如果搜索到字段匹配,它将获取包含单个查询词的所有结果。我的问题是,如果用户搜索带有引号或任何其他标记的短语,是否有任何直接的方法,hibernate搜索应用基于短语的搜索。另一方面,它检索基于单词的结果。如果用户输入两个以任意布尔字符分隔的查询词,则将应用布尔搜索等。例如:

Example Query     | Description
United States     | Search for all occurrences of two words: United and States
"United States"   | Search for phrase "United States"  
United NOT States | Apply Boolean not query on United and States


我想实现一些类似谷歌的东西,我知道谷歌太强大了,但至少有一点是可以做到的。我只想知道Hibernate Search和lucene中是否有针对这类东西的内置功能,或者我需要为用户提供一些运算符,手动解析用户查询,实现一些逻辑来查找运算符和其他符号,然后根据找到的符号应用查询。请帮忙

在Hibernate搜索中没有类似的东西,但是Lucene有一个查询解析器。关于它的语法,请看-

如果您对它的功能和语法感到满意,您可以将用户输入传递给Lucene查询解析器。如果没有,则需要编写自己的语法和语法解析器,将查询转换为适当的Hibernate Search/Lucene查询