2017-02-15 5 views
1

У меня есть Solr 5.3.1 и нужно делать запрос для всего поля, кроме некоторого поля (что мне нужно, чтобы поиск в каком-либо поле не извлекал поля таким образом, чтобы извлекать [/? д = запрос & фл = field1, field2, field3])Как игнорировать некоторые поля в запросе 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

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

ответ

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 
2

Использование copyField

Вот как вы можете использовать это:

  • Сделать все поля хранится = "истина" и индексируются = "ложь"
  • Также создайте новое поле: cffield with multiValued = "true", stored = "false" и indexed = "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 тега скопировать из поля источника Цел

Пример схемы :

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

Теперь вы можете осуществлять поиск с использованием

query = cffield:txtSearch 

Это даст вам результат от всего поля вы используете источник copyField в и cffield в Dest

+1

** спасибо ** это работает сейчас :) –

Смежные вопросы