我有一个包含 5 个字段的集合,例如 a,b,c,d,e.目前它的工作方式类似于 q=a:value,但我想跨字段搜索(如 q=value(
我在solrConfig中尝试了以下内容.xml但没有运气。欣赏任何指示
<initParams path="/update/**,/query,/select,/tvrh,/elevate,/spell,/browse">
<lst name="defaults">
<str name="df">text1</str>
</lst>
<copyField source="a" dest="text1" indexed="true" stored="true"/>
<copyField source="b" dest="text1" indexed="true" stored="true"/>
<copyField source="c" dest="text1" indexed="true" stored="true"/>
<copyField source="d" dest="text1" indexed="true" stored="true"/>
<copyField source="f" dest="text1" indexed="true" stored="true"/>
</initParams>
<fields>
<copyField source="a" dest="text1" indexed="true" stored="true"/>
<copyField source="b" dest="text1" indexed="true" stored="true"/>
<copyField source="c" dest="text1" indexed="true" stored="true"/>
<copyField source="d" dest="text1" indexed="true" stored="true"/>
<copyField source="f" dest="text1" indexed="true" stored="true"/>
</fields>
使用edismax
查询分析器并提供qf
参数。它还可以让您以不同的方式提高每个领域的点击率。qf=a^5 b
在a
场的命中率将是b
场命中率的五倍。
由于字段规范现在位于qf
参数中,因此q
参数可以用作更简单的用户类型查询 -q=foo bar
。
您可以使用名为"text1"的复制字段,将所有可搜索字段复制到此字段中,并将其指定为默认搜索字段。
<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">text1</str>
在schema.xml
中添加字段
<fields>
<field name="a" type="string" indexed="true" stored="true" required="true" />
<field name="b" type="string" indexed="true" stored="true" required="true" />
.
.
<field name="text1" type="text" indexed="true" stored="false" multiValued="true" />
</fields>
您可以将要复制的字段添加到复制字段中,如下所示:
<copyField source="a" dest="text1"/>
<copyField source="b" dest="text1"/>
...
<copyField source="e" dest="text1"/>