【问题标题】:Lucene Solr: Is it possible to index with term weights?Lucene Solr:是否可以使用术语权重进行索引?
【发布时间】:2020-07-21 09:39:38
【问题描述】:

我想使用 Solr 来索引具有术语权重的文档。

Doc1:this(w=0.3) is(w=0.4) the(w=0.1) first(w=0.7) doc(w=0.2)

Doc2:this(w=0.1) is(w=0.2) the(w=0.5) second(w=0.8) doc(w=0.1)

请注意,同一个词的权重对于两个文档可能不同。

索引后,我希望搜索功能在对文档进行评分时考虑这些权重。例如,如果查询是“doc”,我希望 Doc1 获得更高的分数。

这可能吗?

谢谢!

【问题讨论】:

  • 你见过the Payload Score Parser吗?另外,请参阅 2017 年 Lucene Solr Revolution 的 Payoads in Solr - 您还可以在 Youtube iirc 上找到演讲。
  • 我尝试对 Payload 使用端到端示例,但它不适用于最新的 Solr 版本 8.5.0。是否有一个示例与我在上面需要的与 Solr 8.5.0 一起使用的有效负载做类似的事情?谢谢!
  • 请用您尝试过的内容和遇到的问题来扩展您的问题 - 以及根据您的期望没有工作的内容,因为有效负载可能是实现此功能的最简单方法
  • 据我了解,Payloads 本身不能作为排名过程中的术语权重。为此需要编写一些额外的代码。我只能在网上找到一个这样的例子:lucidworks.com/post/end-to-end-payload-example-in-solr。我尝试使用最新版本的 Solr (8.5.0) 编译此代码,但它无法编译,因为许多函数/类已被弃用(例如 DefaultSimilarity)。在问题的示例中,我希望 Doc1 中的“this”这个词被“提升”0.3,在 Doc2 中被“提升”0.1,依此类推。谢谢!
  • 这不正是Payload Score Parser 试图做的吗?这是您所链接的同一事物的 Solr 版本的实际的、已提交的部分。

标签: indexing solr lucene


【解决方案1】:

这是 MatsLindh 指出的,谢谢!

可以使用有效负载来完成:https://lucene.apache.org/solr/guide/8_5/other-parsers.html#payload-score-parser

我不建议尝试使用此处的示例:https://lucidworks.com/post/end-to-end-payload-example-in-solr/

这是解决方案。

1) 创建一个新集合:

bin/./solr create -c my_docs -s 1 -rf 2

2) 将此(基于示例)写入 CSV 文件:(1.csv)

id,txt_dpf

1,this|0.3 is|0.4 the|0.1 first|0.7 doc|0.2

2,this|0.1 is|0.2 the|0.5 秒|0.8 doc|0.1 `

3) 将内容添加到集合中:

bin/./post -c my_docs -type text/csv -out yes docs/csv/1.csv

4) 查询: localhost:8983/solr/my_docs/select?debug=results&fl=txt_dpf,score&q={!payload_score%20f=txt_dpf%20v=this%20func=max%20includeSpanScore=true}

一些重要说明:

  1. 权重所在字段的名称很重要!它必须以“dpf”结尾。

  2. 使用 IncludeSpanScore=true,否则您的分数将只是权重。

@MatsLindh,再次感谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多