2014-04-24 10 views
5

Próbuję wykonać dwa zapytania Lucene. Pierwszy działa. Drugi nie. Moja pierwsza kwerenda wygląda następująco:Lucene Query Składnia pola z spacją

level:"dangerous" 

moje drugie zapytanie wygląda następująco:

IP address:"11.22.333.444" 

ja nie dostaję błąd zapytania. Wiem jednak, że istnieją dokumenty o pasującym adresie IP. Z tego powodu podejrzewam, że przyczyną problemu jest przestrzeń między "IP" i "adresem". Jednak nie jestem ekspertem w Lucene. Więc nie jestem pewien, czy mam rację.

Kiedy patrzę na mojego wyniku ustawionymi przy listonosz, widzę dokumentu z pola, która wygląda następująco:

"IP address": "11.22.333.444" 

Czy ktoś mógłby mi powiedzieć, czy moje zapytanie jest poprawne? Lub, jeśli czegoś brakuje?

Dziękujemy!

Odpowiedz

6

Tak, to miejsce jest problemem.

Spacja w nazwie pola jest dopuszczalna, ale powoduje konflikt ze składnią analizatora zapytań. Jesteś w istocie działa dwa podzapytania łączyć jako SHOULD klauzul (tj OR):

  • IP
  • address:"11.22.333.444"

Można uciec z miejsca za pomocą jednego ukośnik przed przestrzeni, takich jak:

IP\ address:"11.22.333.444" 
+0

Niestety, to nie działa. – user3469584

+1

Podejrzewam, że był typ w oryginalnym wpisie. Sztuką jest użycie pojedynczego ukośnika, aby uciec z kosmosu, a następnie działa. Adres IP: adres ... –