2013-08-29 50 views
1

目前我有样本数据是这样的:Solr的 - 字符串搜索字段倍数值,所有字必须匹配

<doc> 
<int name="name">Nice Dress</int> 
<arr name="keyword"> 
    <str>best cocktail dress</str> 
    <str>platform complete pumps</str> 
    <str>platform pumps</str> 
    <str>slip dress</str> 
</arr> 

我用多值“关键字”字段。

壳体1

defType:edismax 
qf:keyword 
q:cocktail dress 

solr的将返回数据。

情况下2

defType:edismax 
qf:keyword 
q:coctail dress pump 

它仍然返回数据,如果我们从样本数据看,没有关键字包含在一排所有这3字('coctail“礼服”“泵”)的每个关键字。 如何使solr不返回此结果?

谢谢。

回答

1

检查两个参数

positionIncrementGap - 针对多值字段这个参数会决定什么是多值字段中的两个领域之间的距离它。如果此值为100,则两个多值字段之间的距离将为100个位置。

注意 - 默认positionIncrementGap是0

检查的qsquery slop参数dismax将将决定术语之间的斜率匹配。

+0

谢谢。它的工作。我增加了约1000人。100,它不适合我。 – runix

0

尝试此查询:

q:(coctail dress pump)~100 

positionIncrementGap设置为类似300

这些值将需要改变,具体取决于您的数据有多长。