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

Java 使用Lucene获得更好的搜索结果,java,lucene,Java,Lucene,我有一个数据库,里面有很多书。我有标题、描述、作者等字段 我正在索引标题,提升100f,描述,提升0.1f,这两个字段都是标记化和词干化的 我使用一个输入字段进行搜索,该字段使用booleanquery与BooleanClause.Occurse.SHOULD连接并包含每个字段的通配符查询来搜索所有可用字段。我还从查询中删除了所有“stopwords”作为开始 我遇到的问题是当我搜索不带引号的字符串时 “de wetenschap van het leven”,删除停止词后,我得到“wetens

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

我正在索引标题,提升100f,描述,提升0.1f,这两个字段都是标记化和词干化的

我使用一个输入字段进行搜索,该字段使用booleanquery与BooleanClause.Occurse.SHOULD连接并包含每个字段的通配符查询来搜索所有可用字段。我还从查询中删除了所有“stopwords”作为开始

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

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

标题查询变为“
*wetenschap
*
*leven
*”,描述查询相同,包装booleanquery与BooleanClause.occure.SHOULD连接

以下书籍在数据库中

  • Wetensschappelijk denken。伊恩 在梅迪奇岛 wetenschappen en voor de生物医药公司 安德烈·莱文斯韦查普
  • 德 韦滕查普范德阿尔德。伊恩 左旋刨床
  • 阿特拉斯范德酒店 门塞利克列文斯洛普酒店
  • 德韦滕查普 范赫特·莱文。伊恩海德酒店 生物多样性
这本书在前4本书中返回,这很好,但在这个实现中,我们在3处中断,其余的在“阅读更多”链接下面。仅仅提高截止值是不可能的

对我来说,“De wetenschap van het leven.Over eenheid in biologische diversiteit”这本书比其他书更符合“更多”的查询(或者我觉得是这样),但我无法找到正确的索引/搜索组合来实现这一点。有人有想法吗?

一些建议:

  • 不要删除停止词-它们似乎是搜索查询的重要部分
  • 不要使用通配符-只搜索您需要的单词。我相信最好是使用短语查询,例如“de wetenschap van het leven”
  • 不要搜索过去的句子结尾。这更难-你可能需要单独索引每个句子
  • 阅读-你可能会有其他的想法

  • 我还为整个字符串添加了短语搜索,从而提高了相关性。通过这种方式,我们仍然可以获得“搜索所有内容”的行为,并且标题比其他内容更相关。

    我认为您可能需要一个span查询(特别是span查询)

    给出了一份文件“一只敏捷的棕色狐狸跳过了一只懒狗”

    它可以找到“棕色狐狸”和“懒狗”的匹配项。您可以调整slop设置来调整两个搜索查询短语/术语之间的距离……简言之,它提供了许多工具来调整搜索


    同样不熟悉荷兰语(?)您可能希望尽可能阻止查询,并避免使用通配符-它们非常昂贵,并且会导致较低的精确度和召回率。

    已经有一段时间了,但是您是如何进行整个字符串短语搜索的,您是否只进行了两次搜索,然后以某种方式组合结果?