java - 使用 Lucene 获得更好的搜索结果

标签 java lucene

我有一个数据库,里面有很多书。我有标题、描述、作者等字段。

我索引标题时提升了​​ 100f,描述时提升了 0.1f,这两个字段都进行了标记化和词干化。

我正在使用单个输入字段进行搜索,该输入字段使用与 BooleanClause.Occur.SHOULD 连接并包含每个字段的通配符查询的 boolean 查询在所有可用字段中进行搜索。我还从查询中删除了所有“停用词”。

我遇到的问题是当我搜索不带引号的字符串时

“de wetenschap van het leven”,删除停用词后我得到“wetenschap leven”

标题查询变为“*wetenschap* *leven*”,描述查询相同,带有一个与 BooleanClause.Occur.SHOULD 连接的包装 boolean 查询。

数据库中有以下书籍

  • Wetenschappelijk denken。恩 inleiding voor de medische en biomedische wetenschappen en voor de andere levenswetenschap。
  • 德 wetenschap van de aarde。过度 莱文德星球
  • 阿特拉斯范德 menselijke levensloop
  • 去天气 万赫利文。超过 enheid 在 生物多样性

返回前 4 本书,这很好,但在这个实现中,我们在 3 处中断,其余的在阅读更多链接下方。只是提高截止值不是一种选择

对我来说,“De wetenschap van het leven. Over enheid in biologische diversiteit”一书与查询“更多”匹配(或者我觉得如此),但我无法找到正确的索引/搜索组合使这项工作。有人有想法吗?

最佳答案

一些建议:

  1. 不要删除停用词 - 它们似乎是您搜索查询的重要组成部分。
  2. 不要使用通配符 - 只搜索您需要的字词。我相信最好的办法是使用 PhraseQuery - 例如“de wetenschap van het leven”。
  3. 不要搜索过去的句末。这更难 - 您可能需要分别为每个句子编制索引。
  4. 阅读Debugging Relevance Issues in Search - 你可能会在那里得到其他想法。

关于java - 使用 Lucene 获得更好的搜索结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2310227/

相关文章:

java - 如何让你的应用程序谷歌搜索一些东西?

java - 使用 dex2jar 将 .dex 文件转换为 .jar 文件

elasticsearch - 使用Ngram索引的Elasticsearch未找到部分匹配项

search - Lucene - simpleAnalyzer - 如何获取匹配的单词?

java - Lucene的ScoreDoc.score是什么意思?

Java 线程在处理结束时变慢

java - 我正在制作一个简单的计算器,但 GUI 构建一直卡住

可迭代对象的 Java GraphQL 解析器 : Hibernate Exception

java - 如何修复 OpenGLES glDrawElements

java - 如何在lucene中解锁索引目录