【发布时间】:2011-11-28 10:16:20
【问题描述】:
例如,我的搜索关键字是:“篮球”。什么查询可以获取所有包含“Basket Ball”的字段?? 我尝试过使用 *:Basket Ball,但它不起作用。
【问题讨论】:
例如,我的搜索关键字是:“篮球”。什么查询可以获取所有包含“Basket Ball”的字段?? 我尝试过使用 *:Basket Ball,但它不起作用。
【问题讨论】:
schema.xml 定义默认搜索字段 -
<defaultSearchField>text</defaultSearchField>
您可以将所有字段复制到此默认搜索字段。
<copyField source="field1" dest="text"/>
<copyField source="field2" dest="text"/>
<copyField source="field3" dest="text"/>
查询q=basket ball 应该可以工作。
【讨论】:
默认搜索字段(自 3.6 起)现在在 solrconfig.xml 中定义
例如在 Solr configsets 目录附带的 solrconfig.xml 中,您会看到类似
<initParams path="/update/**,/query,/select,/tvrh,/elevate,/spell">
<lst name="defaults">
<str name="df">allText</str>
</lst>
</initParams>
您可以将allText 更改为yourDefaultSearchFieldName
【讨论】:
<initParams path="/update/**,/query,/select,/tvrh,/elevate,/spell"> <lst name="defaults"> <str name="df">allText</str> </lst> </initParams> 中定义的,并且字段 'allText' 在 schema.xml 中定义如下 <field name="allText" type="text_general" indexed="true" stored="false" multiValued="true"/> 所以我猜你需要在架构 - 在我们的例子中,该字段称为“allText”
您需要使用能够将令牌分派到多个字段的查询解析器,例如 (e)dismax。例如,如果您有两个字段 field1 和 field2:http://solr/select?q={!dismax}Basket Ball&qf=field1^1 field2^1
有关 dismax 配置的更多信息,请参阅 http://wiki.apache.org/solr/DisMaxQParserPlugin#qf_.28Query_Fields.29。
【讨论】:
field1 中的匹配应该是field2 中匹配的两倍,则可以使用qf=field1^2 field2^1。