【问题标题】:Solr4 currently only looks at the default "df" field, how can we search multiple fields?Solr4 目前只查看默认的“df”字段,我们如何搜索多个字段?
【发布时间】:2013-02-20 22:15:06
【问题描述】:

在 Solr 4 中,我看到我们在 /select 请求处理程序中配置了默认字段“df”:

  <requestHandler name="/select" class="solr.SearchHandler">
    <!-- default values for query parameters can be specified, these
         will be overridden by parameters in the request
      -->
     <lst name="defaults">
       <str name="echoParams">explicit</str>
       <int name="rows">10</int>
       <str name="df">id</str>

id 是我们唯一的文档字段,所以所有查询都默认为“id:my_query”,它总是返回 0 个结果。

如何定义默认查询哪些字段?

这是从 v3 到 v4 的升级,这部分似乎已经被破坏了。

【问题讨论】:

    标签: solr solr4


    【解决方案1】:

    您可以使用名为“text”的copy field,将所有可搜索字段复制到此字段中,并将其指定为默认搜索字段。

    <requestHandler name="/select" class="solr.SearchHandler">
        <!-- default values for query parameters can be specified, these
             will be overridden by parameters in the request
          -->
         <lst name="defaults">
           <str name="echoParams">explicit</str>
           <int name="rows">10</int>
           <str name="df">text</str>
    

    您可以将要复制的字段添加到复制字段,如下所示:

    <copyField source="field1" dest="text"/>
    <copyField source="field2" dest="text"/>
    ...
    <copyField source="fieldn" dest="text"/>
    

    注意这里的“文本”是复制字段。

    【讨论】:

    • 如何复制多个(但不是全部)字段,即,这是否正确:,我想你必须配置字段“allsearchable”与其他字段的配置方式相同吗?
    • 如果您复制到“文本”的源字段具有不同的字段类型(然后具有不同的标记器),则此方法存在问题。这意味着,当您搜索文本时,只会应用应用于“文本”字段类型的标记器。
    • @ChrisDrumgoole,我同意您的观点,即一旦复制到默认的“文本”字段,字段的所有描述性值都会丢失。解决这个问题的正确方法是什么?
    【解决方案2】:

    您可以使用 edismax 搜索。

    https://cwiki.apache.org/confluence/display/solr/The+Extended+DisMax+Query+Parser

    检查 qf(查询字段)参数。您可以将多个字段传递给它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-26
      • 2022-08-17
      • 1970-01-01
      • 1970-01-01
      • 2013-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多