2011-11-28 142 views

回答

10

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

<defaultSearchField>text</defaultSearchField> 

您可以复制所有字段此默认搜索字段。

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

和查询q=basket ball应该工作。

+2

自Solr 3.6及更高版本以来,这已不再适用。这样做后查看https://issues.apache.org/jira/browse/SOLR-2724 – kellyfj

3

您需要使用能够将令牌分派给多个字段的查询解析器,例如(e)dismax。对于为例,如果你有两个字段field1field2http://solr/select?q={!dismax}Basket Ball&qf=field1^1 field2^1

对dismax配置的详细信息,请参阅http://wiki.apache.org/solr/DisMaxQParserPlugin#qf_.28Query_Fields.29

+0

如果这样,它仍然必须指定将在搜索合适的领域,。 ?这个人物是什么意思? – Praditha

+0

是的,你需要指定每个字段。 '^'字符赋予你赋予你的领域权重的能力。例如,如果'field1'中的匹配应该比'field2'中的匹配重要两倍,那么可以使用'qf = field1^2 field2^1'。 – jpountz

4

默认的搜索字段(自3.6)现在solrconfig.xml中定义

例如在附带的Solr configsets目录,你会看到类似

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

你可以改变solrconfig.xml中allTextyourDefaultSearchFieldName

+0

,同时搜索给出错误“未定义的字段文本” –

+0

您使用的是哪个版本的Solr? – kellyfj

+0

我正在使用solr 5.3 –