2012-01-17 30 views
5

Solr ile çalışıyorum ve sorguda bir LIKE yan tümcesi olup olmadığını bilmek istiyorum. Örneğin, başlığında "New York" bulunan tüm kuruluşları tanımak istiyorum. SQL'de bu, Name LIKE 'New York%' olarak yazılacaktı.Solr Sorgu, LIKE ile birlikte

Soruma soru: Solr'da bir LIKE sorgusu nasıl yazıyorsunuz?

Bu, bir fark yaratırsa SolrNet kitaplığını kullanıyorum.

+0

http://stackoverflow.com/questions/3088401/substring-matches-within-solr – naresh

cevap

6

Sadece "New York" için arama yapın, ancak önce alanınızın analiz cihazını doğru şekilde yapılandırmanız gerekiyor. Örneğin, default Solr schema'da tanımlandığı gibi text_general gibi bir alan türüyle başlamak isteyebilirsiniz. Bu alan türü, boşluk ve diğer yaygın sözcük ayırıcıları üzerinde tokenize olacak, daha sonra bir durdurma filtresi filtresi uygulayacak ve daha sonra aramaları büyük/küçük harfe duyarlı hale getirmek için terimleri küçük harfle yazacaktır.

analyzers in the Solr wiki hakkında daha fazla bilgi.

+0

adresini kontrol edebilirim, varsayılan koleksiyon1 schema.xml öğesinden text_general kopyala yapıştırmam ancak projem işe yaramadı. string "sıcak" aramaya çalışıyorum "dubai sıcak mı?" –

+0

eğer Solr admin'de analiz edersem orada çalışırım ama eğer Admin> Query'de arama yaparsam –

6

Eğer solr 3.1 veya daha yenisini kullanıyorsanız, joker karakter sorgularını destekleyen Extended DisMax Query Parser'a bakın. İstek işleyici yapılandırmasında <str name="defType">edismax</str> kullanarak etkinleştirebilirsiniz.

Öyleyse title:New York* gibi bir sorguyu, benzer tümceye benzer bir sorguyla kullanabilirsiniz. Cevabım ile kabul edilen arasındaki temel fark, joker karakterlerle sözcüklerin bir kısmını bile aramanızdır. Örneğin, New Yorkers bu durumda eşleşir. LowerCaseFilterFactory kullanıyor olsanız bile büyük/küçük harfe duyarlı sorgularla ilgili sorun yaşayabilirsiniz. Daha fazla bilgi için here bir göz atın. Bu sorunların çoğu, SOLR-2438 sorunu çözüldüğü için solr 3.6 sürümü ile sabitlenecektir.