【问题标题】:lucene - returning all docs that mach one field and sort by relevance of anotherlucene - 返回所有匹配一个字段并按另一个字段的相关性排序的文档
【发布时间】:2012-01-02 16:37:19
【问题描述】:

我需要能够搜索某个组的所有成员(由一个共同的groupId 字段标识)并通过与另一个字段的相关性将它们取回 (description)

意思是,假设我已将以下文档编入索引:

name="a" groupId="445" description="lives in a blue house"
name="b" groupId="445" description="has a green car"
name="c" groupId="445" description="likes blue flowers"
name="d" groupId="445" description="his eyes are brown"
name="e" groupId="445" description="her table is light-blue"

我想通过 id (groupId:445 AND ...) 获取它们,然后按与“蓝色”一词的相关性排序 含义 - 我想先得到 a、b、c 仍然得到其他人(描述中根本没有“蓝色”这个词),只是分数较低

我怎样才能做到这一点?

谢谢!

【问题讨论】:

  • 一个简单的hackish方法是使用布尔查询来组合您的多个查询。更好的方法是使用 CustomScoreQuery 的子类并覆盖 getCustomScoreProvider 以返回您的 CustomScoreProvider 子类。
  • 我已经查看了 CustomScoreQuery,此时更改评分机制对我来说有点先进,所以我可能会像你说的那样重新排列查询

标签: search lucene


【解决方案1】:

你想要的是提升。以groupId:445^10 description:blue 为例。

【讨论】:

    【解决方案2】:

    我找到了答案: 查询的程序化构造(更多信息:http://www.lucenetutorial.com/lucene-query-syntax.html

    当我将 TermQuery 添加到 BooleanQuery 时,我发现我可以将其定义为“必须发生”或“应该发生”(我认为在查询语法中,它在术语)

    更多关于发生: http://lucene.apache.org/java/3_4_0/api/all/org/apache/lucene/search/BooleanClause.Occur.html

    【讨论】:

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