【问题标题】:Solr configuration to filter all docs with titles that exactly match the search query itselfSolr 配置以过滤所有标题与搜索查询本身完全匹配的文档
【发布时间】:2015-04-15 22:35:19
【问题描述】:

我正在尝试设置一个 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,我这样做是一个更大的否定查询定位项目的一部分,这只是原型设计的一部分。

感谢所有帮助。

【问题讨论】:

    标签: xml search solr configuration


    【解决方案1】:

    您所说的问题是 $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"
    

    【讨论】:

    • 我没有使用 5.1,所以这对我不起作用,但感谢您分享信息。我确实找到了另一种方法来做我想做的事情:通过在 java 中编写一个 QParserPlugin 来拦截查询并将 fq 参数添加到请求中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-24
    • 1970-01-01
    • 2019-02-01
    • 1970-01-01
    • 2021-01-04
    • 1970-01-01
    • 2020-08-27
    相关资源
    最近更新 更多