5

To pytanie jest wyodrębnione z pytania this. Moje zapytanie jest dwojakie, ale ponieważ oba są powiązane, myślę, że dobrze jest je połączyć.Jak tworzyć bardziej złożone ciągi zapytań Lucene?

  • Sposób programowego tworzenia zapytań. Wiem, że mógłbym zacząć tworzyć ciągi i uzyskać ten ciąg analizowany za pomocą analizatora zapytań. Ale kiedy zbieram fragmenty i informacje z innych zasobów, istnieje programowy sposób na zrobienie tego.
  • Jakie są reguły składni dla zapytań Lucene?

--EDIT--

dam przykładem wymogiem dla zapytania chciałbym zrobić:
Say mam 5 pól:

  1. imię
  2. Nazwisko
  3. Wiek
  4. Adres
  5. Wszystko

Wszystkie pola są opcjonalne, ostatnie pole powinno przeszukiwać wszystkie pozostałe pola. Przechodzę przez każde pole i sprawdzam, czy jest to IsNullOrEmpty(). Jeśli nie, chciałbym dołączyć część mojego zapytania, aby dodać odpowiednią część wyszukiwania.
Imię i nazwisko powinny być dokładnie dopasowane i mieć większą wagę niż pozostałe pola. Wiek jest ciągiem i powinien dokładnie pasować. Adres może się różnić w kolejności. Wszystko może się zmieniać w kolejności.

Jak powinienem to zrobić?

Odpowiedz

6

Skorzystaj z klasy BooleanQuery, aby komponować obiekty zapytania. Utwórz jeden z nich i dodaj() inne obiekty zapytania do niego, aby utworzyć większe, rozłączne zapytanie:

  • BooleanQuery q = new BooleanQuery();
  • q.add (qFirstName, Occur.SHOULD);
  • q.add (qLastName, Occur.SHOULD);
  • ...

zapytań atomowe mogą być budowane z klasami perspektywie i TermQuery.

(Linki i przykład odnoszą się do Lucene Java, ale .NET powinien być podobny.)

Powiązane problemy