2011-11-22 16 views
7

Solr'de bir alan nodeId: -1 gibi negatif bir sayı ile aramak istiyorum. />Solr bölgesinde negatif sayı nasıl aranır?

Solr zaman kullanımı "nodeID hata atar < alan adı = "nodeID" type = "int"= "true" saklı = "true" endeksli: schema.xml içinde, ben böyle tanımlanmış - 1 "böyle aramak için: org.apache.lucene.queryParser.ParseException: 'storeId: -1' ayrıştırılamıyor:" 1 - sütun 1'de "- -" "-" "ile karşılaşıldı. Aşağıdakilerden birini bekliyordum:" ("..." * "... ... ... ..." ["..." {"... ...

StoreId ile arama yapmalıyım: \ - 1 veya storeId: "- 1" yanıtı almak için

şimdi soru şu: Herhangi bir solr configration dosyasını değiştirebilir miyim kaçış karakterleri olmadan arama yapmak için? Veya java kodunu değiştirmeden bu sorunu çözmek için başka bir yol. Teşekkürler.

cevap

2

"-", bazı bölümleri yasak olarak işaretlemek için kullanılan sorgu ayrıştırıcısı için özel bir karakterdir. Bu karakterden kaçmak istemiyorsanız, sorgu ayrıştırıcınızı değiştirmeniz gerekir.

raw query parser: q={!raw f=nodeId}-1 için bir deneme yapmak isteyebilirsiniz, ancak varsayılan sorgu ayrıştırıcısının özelliklerinden hiçbirine sahip değildir. Aslında, ham sorgu ayrıştırıcısı yalnızca saf vadeli sorgular çalıştırmanıza izin verir.

3

Kişisel olarak, Java kodunuzun içinde düzgün bir şekilde kaçmanın daha iyi bir yol olduğunu düşünüyorum. ClientUtils.escapeQueryChars tercih edilen yöntem olacaktır.