我正在尝试设置solr配置,以过滤掉所有与搜索查询字符串本身完全匹配的标题的文档。到目前为止,我有这个:
<requestHandler name="my_search" class="solr.StandardRequestHandler">
<lst name="defaults">
<str name="defType">my_search</str>
<str name="q.alt">*:*</str>
</lst>
<lst name="appends">
<str name="fq">{!frange l=0.1 u=1000}score</str>
</lst>
所以基本上如果我有一堆像这样的标题的文档:
"blue box on a road"
"road box with blue tail"
"box with blue road"
我搜索了“蓝色方框”,根据我的配置,所有三个文档都会返回,但是一旦我添加了额外的过滤器,标题为“蓝色方框”的文档将不会返回。我想如果我把这一行添加到追加部分,我就能实现我想做的事情:
<str name="fq">-title_en:$q</str>
但是,我认为语法错误(特别是$ q部分),因为我没有得到理想的结果。我的问题是,这是否可能,如果是这样,在xml配置中引用查询字符串的正确语法是什么。
fyi,我这样做是一个更大的负面查询定位项目的一部分,这只是原型的一部分。
非常感谢所有的帮助。
答案 0 :(得分:0)
你说的问题是$ q部分。此
<str name="fq">-title_en:"box with blue road"</str>
至少在Solr4.X中工作。但是不确定参数替换是否可以用于你想要的......在5.1之前(刚刚在一两天前发布)。
在5.1中你可以肯定这样做,检查Parameter Substitution / Macro Expansion,你的查询将是这样写的:
q=${querytext}
&fq={!frange l=0.1 u=1000}score
&fq=-title_en:${querytext}
&querytext="box with blue road"