Я пытаюсь запросить Solr для записей, что или имейте определенное значение в поле ИЛИ никакое значение для поля. Отрицаемое значение поля работает, когда оно используется отдельно, но заставляет запрос не возвращать результаты в сочетании ни с чем больше. Ниже ответ с включенным debugQuery. Файл конфигурации, который я использую, может быть найден здесь.
0
3
true
sort_title asc
id,nid,url,uid
true
1
true
0
recip(rord(created),4.000000,239,239)^200.000000
NOT type:article
NOT type:insect
NOT type:news
NOT type:plant
im_cck_field_affected_plants:(20 OR -[* TO *])
entity:node
1.2
16
+MatchAllDocsQuery(*:*) FunctionQuery((239.0/(4.0*float(top(rord(created)))+239.0))^200.0)
+*:* (239.0/(4.0*float(top(rord(created)))+239.0))^200.0
DisMaxQParser
org.apache.lucene.search.MatchAllDocsQuery:*:*
recip(rord(created),4.000000,239,239)^200.000000
NOT type:article
NOT type:insect
NOT type:news
NOT type:plant
im_cck_field_affected_plants:(20 OR -[* TO *])
entity:node
-type:article
-type:insect
-type:news
-type:plant
im_cck_field_affected_plants:20 -im_cck_field_affected_plants:[* TO *]
entity:node
3.0
3.0
2.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
Любая справка ценилась бы.
Наконец, сформулировал вопрос достаточно хорошо, чтобы найти ответ через Google.
http://osdir.com/ml/solr-user.lucene.apache.org/2009-03/msg00480.html
Запросы OR NOT могут быть записаны как, используя мой случай в качестве примера:
im_cck_field_affected_plants:20 OR (*:* -im_cck_field_affected_plants:[* TO *])