2017-02-15 90 views
1

我有Solr 5.3.1並且需要爲除某些字段以外的所有字段執行查詢(我需要在某個字段中搜索而不用這種方式檢索字段以檢索[/? q =查詢& FL = FIELD1,FIELD2,字段3])如何忽略SOLR查詢中的某些字段

我嘗試了一些解決辦法,但不能工作

1. How to exclude fields in a SOLR query [本soluation不起作用]

2以下溶液的工作,但需要更多時間]

query = field1:"+txtSearch+"OR field1:"+ txtSearch+" OR field1:"+txtSearch 

3.I設置索引=「假」數據-config.xml中它只忽略在這個領域的搜索,但是當我搜索的所有字段http://localhost:8983/solr/test?q=query在所有領域的查詢搜索,無論索引=」假」或真

我期待這一切鏈接

Retrieving specific fields in a Solr query?

How to exclude fields in a SOLR query

012在schema.xml中被提及種

https://www.drupal.org/node/1933996

回答

0

indexed="false" 需求。

一旦你修改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 
2

使用copyField

這裏是你如何使用這個:

  • 讓所有的現場存儲= 「true」 和索引= 「假」
  • 同時創建一個新字段,說cffield與multiValued =「true」,存儲=「假」和索引=「真」

示例模式:

<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標籤的設置源值從源字段複製到dest

示例模式:

<copyField source="field1" dest="cffield"/> 
<copyField source="field2" dest="cffield"/> 
.... 

現在您可以使用搜索功能

query = cffield:txtSearch 

這會給你所有的領域造成您使用copyField的來源和cffield爲DEST

+1

**感謝**它現在的工作:) –