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

时间:2010-02-22 10:26:04

标签: java lucene

我有一个包含大量书籍的数据库。我有标题,描述,作者等领域。

我正在使用100f的提升索引标题和提升0.1f的描述,这两个字段都被标记化并阻止。

我正在使用单个输入字段进行搜索,该字段使用与BooleanClause.Occur.SHOULD连接的booleanquery搜索所有可用字段,并为每个字段包含一个wildcardquery。我还从查询中删除所有“停用词”以开始。

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

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

以下书籍在db

  • Wetenschappelijk denken。 EEN inleiding voor de medische en biomedische wetenschappen en voor de andere levenswetenschap。
  • 德 wetenschap van de aarde。过了 levende planeet
  • Atlas van de menselijke levensloop
  • De wetenschap van het leven。在eenheid in biologische diversiteit

这本书在前4本书中回归,这很好,但在这个实现中,我们在3处切断,其余部分在阅读更多链接之下。只是增加截止值不是一个选择

对我而言,“De wetenschap van het leven。在生物学多样化中的eenheid”一书将“更多”与其他查询相匹配(或者我感觉如此),但我无法找到正确的索引/搜索组合使这项工作。有没有人有想法?

3 个答案:

答案 0 :(得分:2)

一些建议:

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

答案 1 :(得分:1)

我认为SpanQuery(特别是SpanNearQuery)可能就是您所需要的。

鉴于一份文件“快速的棕色狐狸跳过一只懒狗”

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

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

答案 2 :(得分:0)

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