4

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

如果我搜索laptop table类似的词,有什么方法可以在诸如 bywithwithout等词之前提升结果搜索词。

我使用了这个查询:

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

by但是,这会对那些有单词等的文档产生负面影响with。我怎样才能避免这个问题?

例如,如果我laptop table通过上述查询进行搜索,则结果DGB Cooling Laptop Table by GDB不会提升。

by我只需要在某些单词(例如,等)之前对搜索词进行提升with。这可能吗?

4

1 回答 1

0

在您的示例中,您希望...laptop table by...结果的得分高于laptop table没有by. 你想...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 有一篇关于这个。

然后你可以做这样的事情:

`q=({!complexphrase inOrder=true}"laptop table by"~2^2 OR "laptop table") NOT {!complexphrase inOrder=true}"by laptop table"~2`
于 2015-08-03T18:23:40.317 回答