【问题标题】:Solr Relevance Search boostSolr 相关性搜索提升
【发布时间】:2015-09-20 20:54:30
【问题描述】:

我正在使用 Solr 5.0.0,我有一个相关性提升问题:

如果我搜索laptop table 之类的词,有没有办法在withwithout 等词之前提升结果搜索词?

我使用了这个查询:

? defType = dismax 
    & q = foo bar 
    & bq = (*:* -by)^999  

但是,这会对那些带有 bywith 等单词的文档产生负面影响。我该如何避免这个问题?

例如,如果我搜索laptop table,那么通过上面的查询结果DGB Cooling Laptop Table by GDB 不会提升。

我只需要在 bywith 等某些词之前对搜索词进行提升。 有可能吗?

【问题讨论】:

标签: solr lucene relevance solr-boost


【解决方案1】:

在您的示例中,您希望...laptop table by... 结果的得分高于没有bylaptop table 结果。并且您希望完全省略 ...by laptop table...

让我们称呼他们:

  • Q1:...laptop table by...(让我们为练习提升 2)
  • Q2:...laptop table...(我们根本不要提升)
  • Q3:...by laptop table...(我们想省略这个)

所以,您在摘要中的查询是:(Q1^2 OR Q2) NOT Q3

dismax 解析器可能会因为为您做太多事情而模糊了您的目标。至少对于这篇文章,您应该考虑使用标准(Lucene)查询解析器:

`q=("laptop table by"^2 OR "laptop table") NOT "by laptop table"`

如果您想允许 slop(即 查询 和 'by' 或 'with' 之间的额外单词)并保持上述术语的顺序,您应该查看 ComplexPhraseQueryParser (Solr 4.8+) Yonik Seeley has a nice post about this.

然后你可以这样做:

`q=({!complexphrase inOrder=true}"laptop table by"~2^2 OR "laptop table") NOT {!complexphrase inOrder=true}"by laptop table"~2`

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-22
    • 1970-01-01
    • 2013-10-07
    • 1970-01-01
    • 2016-12-14
    • 2011-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多