当前位置: 首页 > 知识库问答 >
问题:

使用Hibernate Search和Lucene实现Google式搜索

金钊
2023-03-14

我正在使用Hibernate Search和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中是否有针对这类东西的内置功能,或者我需要为用户提供一些运算符,手动解析用户查询,实现一些逻辑来查找运算符和其他符号,然后根据找到的符号应用查询。好心帮忙

共有1个答案

贾飞鸿
2023-03-14

在HibernateSearch中没有类似的东西,但是Lucene有一个查询解析器。有关其语法,请参见-http://lucene.apache.org/core/4_10_0/queryparser/org/apache/lucene/queryparser/classic/package-summary.html#package_description.

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

 类似资料:
  • bugu-mongo 2.x版本集成了Lucene的功能。当往MongoDB中新增一个Document时,能自动为该Document建立Lucene索引。相应的,当MongoDB中的Document被修改、删除时,对应的Lucene索引也会修改、删除。 另外,bugu-mongo还提供了对Lucene搜索的支持。根据Lucene索引进行搜索的时候,搜索结果能自动转换成对应的Entity对象。 在L

  • 本文向大家介绍Java实现lucene搜索功能的方法(推荐),包括了Java实现lucene搜索功能的方法(推荐)的使用技巧和注意事项,需要的朋友参考一下 直接上代码: 数据库脚本:

  • 当我搜索“#”等特殊字符时,没有结果出现。 请注意,我已经转义了查询字符串。 然而,当与“c#”这样的字母组合时,Lucene找到了这个词。 有没有办法搜索单个特殊字符? 这是我的片段:

  • 供参考:我的代码和这个so帖子非常相似。 谢谢

  • 我正在使用Sitecore搜索数据库中的项目。

  • 假设我存储的Lucene文档有一个表示正则表达式的存储字段。 即 我的搜索输入类似于。