2012-05-21 24 views
5

Etiketlenmiş içerik veritabanına karşı yürütmem gereken bir SOLR araması için oldukça karmaşık gereksinimlerim var. Önce veritabanını filtre etiketlerimle eşleşen sonuçlara göre filtrelemem gerekiyor. Kara listeden bir etiketi olan bu sonuçlardan herhangi biri, beyaz listeden etiket içermedikçe de kaldırılmalıdır.NOT ve OR dahil olmak üzere karmaşık SOLR sorgusu

"Orman" veya "koruma" etiketli tüm belgeleri almak istediğimi varsayalım. Ama "uk" veya "avrupa" etiketli belgeleri hariç tutmak istiyorum - "afrika" veya "asya" ile de etiketlenmedikçe. Benim SOLR sorguda bunu yazmak çalıştı:

tag:((forest OR conservation) AND (africa OR asia OR !uk OR !europe)) 

mantık bana sesi görünüyor ama sorgu çalışmıyor. "Orman" veya "koruma" etiketli 46 belgem var - bunlardan biri "asya" ile etiketlenmiş ve hiçbiri "uk" veya "avrupa" ile etiketlenmemiş ancak sorgu hiçbir sonuç vermiyor.

Ayrıca, FQ (filtreli sorgulama) parametresi hakkında, yararlı olabileceğine benzeyen SOLR'a ilişkin bilgileri gördüm. Ama bu da işe yaramadı. Görünüşe göre, SOLR'ın bozulmasına neden olan NOT ve OR'in birleşimidir.

Yapmaya çalıştığım şey bu mu? Mantığım bir yerlerde kusur mu? Bu SOLR 1.4 btw üzerinde - bu bir yerde çözüldü bir sorun olduğu için ....

Herhangi bir öneriniz için teşekkürler!

+0

deneyin? –

+0

Hayır - 1.4 oldu! Yine de yükseltilmiş beri ... – vitch

+0

Oh, zavallı adam. :( –

cevap

8

, gerçi, SOLR 4.1

tag:((forest OR conservation) AND (africa OR asia OR (*:* AND !uk AND !europe))) 
+1

Teşekkür ederim - bu böyle mi! Neden hakkında biraz daha açıklayabilir misiniz? Olumsuzlukların tam sete (*: *) 'tam olarak uyması gerektiği gözüküyor? – vitch

+0

tam olarak ne olduğunu düşünüyorsunuz. – Persimmonium