【问题标题】:Apache Solr search a string in the entire collection without specifying the field nameApache Solr 在整个集合中搜索一个字符串而不指定字段名称
【发布时间】:2019-02-06 01:03:58
【问题描述】:

我正在寻找一种在整个集合中搜索给定字符串的方法。我推荐了Correct use case of String parameter in SetQuery function of SolrQuery?

提供的示例适用于如下场景:query.setQuery("fieldName":"value"),但不适用于query.setQuery("*value*")。就我而言,我不想提供字段的名称,并且无论字段名称具有此值,它都应该搜索整个集合。这种情况还有其他方法吗?

【问题讨论】:

标签: java solr solrj


【解决方案1】:

schema.xml中创建一个名为"text"的复制字段,并将所有字段复制到其中。

<copyField source="field1" dest="text"/>

为了在 /query 请求处理程序或 IntParams 下的 solrconfig.xml 文件中设置默认搜索字段。

<requestHandler name="/query" class="solr.SearchHandler">
   <lst name="defaults">
     <str name="echoParams">explicit</str>
     <str name="wt">json</str>
     <str name="indent">true</str>
     <str name="df">text</str>
   </lst>
</requestHandler>

<initParams path="/update/**,/query,/select,/tvrh,/elevate,/spell,/browse">
  <lst name="defaults">
    <str name="df">text</str>
  </lst>
</initParams>

【讨论】:

  • 我正在寻找一种通过 Java 编码实现它而不进行任何配置更改的方法。有什么办法吗?
  • 我不这么认为...您必须如上所述创建一个字段,然后您可以使用 java 查询该字段...
  • 感谢您的信息!我完全按照上述步骤操作,只用我的集合中的任何字段修改“filed1”。我没有更改其他配置。但仍然面临以下异常: Can't load schema C:\\solr-7.6.0\\server\\solr\\locations\\conf\\schema.xml: copyField dest :'text' is not an explicit field并且不匹配动态字段。",
  • 您没有任何带有“text”名称的字段,只有带有“text”名称的字段类型。尝试使用名称文本的字段,您可能需要根据您的要求为其添加类型......类似于..
  • 好的。我在文档中有两个字段:locationType 和 description。所以我按照你的步骤操作 searchFields。现在我看到的问题是:Setting defaultSearchField in schema not supported since Solr 7
猜你喜欢
  • 1970-01-01
  • 2012-11-10
  • 2020-07-17
  • 1970-01-01
  • 2014-04-05
  • 1970-01-01
  • 2011-11-06
  • 2012-10-21
  • 2021-11-28
相关资源
最近更新 更多