我有 Solr 5.3.1 并且需要对除了某些字段之外的所有字段进行查询(我需要在某些字段中搜索,而不是通过这种方式检索字段来检索[/?q = query& fl] = field1,field2,field3])
我尝试了一些解决方案,但没有工作
1. How to exclude fields in a SOLR query [此解决方案不起作用]
2. [以下解决方案工作但需要更多时间]
query = field1:"+txtSearch+"OR field1:"+ txtSearch+" OR field1:"+txtSearch
3.我在 data-config.xml 中设置 indexed =" false" 仅忽略此字段中的搜索,但是当我搜索所有内容时字段http://localhost:8983/solr/test?q=query查询在所有字段中搜索,无论 indexed =" false"或者是真的
我寻找所有这些链接
Retrieving specific fields in a Solr query?
答案 0 :(得分:3)
使用copyField
以下是如何使用它:
示例架构:
<field name="field1" type="string" indexed="false" stored="true"/>
<field name="field2" type="string" indexed="false" stored="true"/>
<field name="field3" type="string" indexed="false" stored="true"/>
....
<field name="cffield" type="string" indexed="true" stored="false" multiValued="true"/>
示例架构:
<copyField source="field1" dest="cffield"/>
<copyField source="field2" dest="cffield"/>
....
现在您可以使用
进行搜索query = cffield:txtSearch
这将为您提供使用copyField的源和cffield作为dest的所有字段的结果
答案 1 :(得分:0)
indexed="false"
需要在schema.xml中提及。
修改schema.xml后,需要重新索引数据。(还需要重新启动服务器)
然后solr将不会搜索未编入索引的字段。 如果要在特定字段中搜索,可以使用字段名称和字段的搜索值。
喜欢
`q=field1:"value1"`
q=field1:value1 OR field2:value2
q=field1:value1 AND field2:value2
q=value1&fq=field2:value2&fq=field3:value3