我正在使用Solr 5.0.0,我在相关性提升中有一个问题:
如果我搜索<script type="text/javascript" src="//code.jquery.com/jquery-1.8.3.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/select2/3.2/select2.min.js"></script>
<link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/select2/3.2/select2.css"/>
<input id="e1" style="width:300px" />
个单词,是否有任何方法可以在laptop table
或with
之类的字词之前提升结果搜索字词。
我使用了这个查询:
without
但是,这会对那些包含? defType = dismax
& q = foo bar
& bq = (*:* -by)^999
或by
等字词的文件产生负面影响。我怎样才能避免这个问题?
例如,如果我搜索with
,则通过上述查询,结果laptop table
无法提升。
我只需要在某些字词DGB Cooling Laptop Table by GDB
,by
等之前对搜索字词进行提升。
有可能吗?
答案 0 :(得分:0)
在您的示例中,您希望...laptop table by...
结果得分高于laptop table
结果而不by
。并且您希望完全省略...by laptop table...
。
我们打电话给他们:
...laptop table by...
(让练习提高2点)...laptop table...
(完全没有提升)...by laptop table...
(我们想省略这个)因此,您在摘要中的查询是:(Q1^2 OR Q2) NOT Q3
dismax解析器可能通过代表您做太多来掩盖您的目标。至少对于这篇文章,你应该考虑使用标准(Lucene)查询解析器:
`q=("laptop table by"^2 OR "laptop table") NOT "by laptop table"`
如果你想允许slop(即查询和&#39;或者&#39;或&#39;和&#39;之间的额外词汇)并保留术语的顺序为上面,你应该看一下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`