Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何搜索SOLR中包含关键字的所有字段,。?_Solr_Field - Fatal编程技术网

如何搜索SOLR中包含关键字的所有字段,。?

如何搜索SOLR中包含关键字的所有字段,。?,solr,field,Solr,Field,例如,我发现搜索的关键词是:“篮球”。什么查询可以获取包含“basketball”的所有字段,。? 我尝试过使用*:basketball,但它不起作用。您需要使用一个查询解析器,它能够将令牌分派到多个字段,例如(e)dismax。例如,如果您有两个字段field1和field2:http://solr/select?q={!demax}篮球&qf=field1^1 field2^1 有关dismax配置的更多信息,请参阅。schema.xml定义默认搜索字段- <defaultSearch

例如,我发现搜索的关键词是:“篮球”。什么查询可以获取包含“basketball”的所有字段,。?
我尝试过使用*:basketball,但它不起作用。

您需要使用一个查询解析器,它能够将令牌分派到多个字段,例如(e)dismax。例如,如果您有两个字段
field1
field2
http://solr/select?q={!demax}篮球&qf=field1^1 field2^1


有关dismax配置的更多信息,请参阅。

schema.xml定义默认搜索字段-

<defaultSearchField>text</defaultSearchField>
文本
您可以将所有字段复制到此默认搜索字段

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

和query
q=basketball
应该可以工作。

默认搜索字段(从3.6开始)现在在solrconfig.xml中定义

e、 g.在Solr configsets目录附带的solrconfig.xml中,您将看到如下内容

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

全文

您可以将
allText
更改为
yourDefaultSearchFieldName

如果是这样,它仍然必须指定搜索右侧的字段,。?字符^1是什么意思?是的,您需要指定每个字段。“^”字符使您能够为字段赋予权重。例如,如果
字段1
中的匹配比
字段2
中的匹配重要两倍,则可以使用
qf=field1^2 field2^1
。自Solr 3.6及更高版本以来,这种情况不再存在。这样做之后,,搜索时出现错误“undefined field text”,您使用的是哪个版本的Solr?我在配置中使用的是Solr 5.3,它在solrconfig.xml
allText
中定义,字段“allText”在schema.xml中定义如下
,因此我猜您需要在架构中定义适当的字段-在本例中,该字段称为“allText”