Solr 配置过滤标题与搜索查询本身完全匹配的所有文档
Solr configuration to filter all docs with titles that exactly match the search query itself
我正在尝试设置一个 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"
我搜索了 "box with blue road",根据我的配置,所有三个文档都会 return,但是一旦我添加了额外的过滤器,标题为 "box with blue road" 的文档就不会 return。我想如果我将这一行添加到附加部分,我将能够实现我想要做的事情:
<str name="fq">-title_en:$q</str>
但是,唉,我认为语法是错误的(特别是 $q 部分),因为我没有得到想要的结果。我的问题是,这是否可能,如果是的话,在 xml 配置中引用查询字符串的正确语法是什么。
仅供参考,我这样做是一个更大的负面查询目标项目的一部分,这只是原型设计的一部分。
感谢所有帮助。
你说的问题是$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"
我正在尝试设置一个 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"
我搜索了 "box with blue road",根据我的配置,所有三个文档都会 return,但是一旦我添加了额外的过滤器,标题为 "box with blue road" 的文档就不会 return。我想如果我将这一行添加到附加部分,我将能够实现我想要做的事情:
<str name="fq">-title_en:$q</str>
但是,唉,我认为语法是错误的(特别是 $q 部分),因为我没有得到想要的结果。我的问题是,这是否可能,如果是的话,在 xml 配置中引用查询字符串的正确语法是什么。
仅供参考,我这样做是一个更大的负面查询目标项目的一部分,这只是原型设计的一部分。
感谢所有帮助。
你说的问题是$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"