【问题标题】:Implementing Google like Searching using Hibernate Search and Lucene使用 Hibernate Search 和 Lucene 实现类似 Google 的搜索
【发布时间】:2014-09-09 11:28:40
【问题描述】:

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

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

我想实现类似 google 的东西,我知道 google 功能太强大了,但至少可以完成一点点。我只是想知道在 Hibernate Search 和 lucene 中是否有针对此类事物的内置功能,或者我需要给用户一些运算符,手动解析用户查询,实现一些逻辑来找出运算符和其他符号,然后应用基于找到的符号进行查询。请帮忙

【问题讨论】:

    标签: java hibernate lucene hibernate-search


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多