【问题标题】:Lucene Scoring for Overlap ranking重叠排名的 Lucene 评分
【发布时间】:2017-08-25 04:24:41
【问题描述】:

我是使用 Lucene 的新手,并试图了解如何使用 Lucene 来实现更简单的评分功能。

我的数据集中有对象,每个对象附有 5-10 个术语。 Lucene 默认使用 TFIDF 相似度对对象进行排序。

TFIDF 没有意义,因为我的数据不会改变词频。如何更改默认评分功能,以便根据重叠的关键字进行排名?

Doc1 = {system engineering artificial intelligence}

Doc2 = {architecture logic programming}

Doc3 = {sytem architecture engineering}

对于查询Query = {system architecture},我想要一个排名,其中Doc3 的排名高于Doc1Doc2

【问题讨论】:

  • 您使用的是哪种查询?
  • 一个简单的查询,其中包含一个或两个术语,如上面的system architecture
  • 可以更精确吗?是短语查询吗?带有布尔子句的术语查询?

标签: lucene


【解决方案1】:

我可以建议使用这样的东西:

Query query = new BooleanQuery.Builder()
            .add(new TermQuery(new Term("text", "system")), Occur.SHOULD)
            .add(new TermQuery(new Term("text", "architecture")), Occur.SHOULD)
            .build();

在这种情况下,doc3 的排名将高于 doc1doc2,但 should 子句的性质也允许对其他文档进行排名。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-21
    • 1970-01-01
    • 2011-04-04
    • 2010-09-05
    • 2019-05-04
    • 2010-12-13
    相关资源
    最近更新 更多