2012-02-27 16 views
9
  • używam Solr 3.3.0 roboczy po wyjęciu z pudełka na przykładzie folderu
  • solrQueryParser defaultOperator = "lub"

Moim problemem jest to, że Solr robi” Wydaje się, że powracają dobre wyniki, gdy szukam wielu słów.Wiele zapytań słowo na Solr

Poniższe wyszukiwanie nie zwraca żadnych wyników.

  1. http://localhost:8080/solr/select/?q=roof+fixing

Jednak, kiedy szukać dachu lub ustalające, oboje wrócić kilka dobrych wyników.

  1. http://localhost:8080/solr/select/?q=roofpowraca 4 wyników
  2. http://localhost:8080/solr/select/?q=fixingzwraca 3 Wyniki

Na zapytania dla "mocowania na dachu", spodziewam solr powrócić 7 wyników. 4 rekordy dla dachu i 3 rekordy dla ustalające.

Czy jest wymagana specjalna konfiguracja?

Odpowiedz

8

Właśnie wyraziłeś swoje pytanie niepoprawnie.

Spróbuj następujące zapytanie ze strony Admin:

(dach lub mocowania)

Albo, jeśli chcesz, aby stwierdzić, że w danej dziedzinie:

nazwa_pola: (dach lub mocowania)

Kiedy dajesz SOLR zapytanie takie jak "ustalanie dachu", skutecznie prosisz o wszystkie dokumenty, które mają "dach" ORAZ "ustalające" w domyślnym polu (lub domyślny zestaw pól rozmytych.) Jedyny sposób na zmianę oznacza przepisanie zapytania, które twoja użytkownicy wpisują. To właśnie robimy, ale na większą skalę. Mamy interfejs z przodu, który zapewnia całą gamę opcji i generuje zapytanie SOLR. Ludzie mogą wpisać wyszukiwane hasło w określonym polu, a jeśli jest więcej niż jedno słowo i nie jest ono cytowane, dodajemy AND. Następnie LUB razem wszystkie pola, które są wypełnione. Niektóre pola są specjalne i mają wersję MIN i MAX, które zamieniamy w zapytanie zakresu :[0 TO 125000]. Są też listy rozwijane, które obsługują wiele wyborów, które również zmieniamy w OR, np. State:("WA" OR "CA" OR "OR" OR "NV")

+0

Wydaje mi się, że rozumiem twój punkt widzenia, ale pozwalam użytkownikom przeszukiwać interfejs z przodu, więc nie mogę poprosić użytkowników o wpisanie * (naprawa dachu LUB) *. – Filype

+0

Dzięki za dodatkowe wyjaśnienie, ale wydaje mi się, że nie uzyskuję więcej wyników, pisząc http: // localhost: 8080/solr/select /? Q = (roof% 20OR% 20fixing) – Filype

+1

Filype, jeśli puszczasz użytkownicy wyszukują interfejs i oczekują lub zachowują się w wyszukiwaniu, dlatego przed wysłaniem do SOLR należy przetworzyć ich zapytanie na zapleczu. Powinieneś przygotowywać swoje wartości za pomocą nawiasu, jak podano powyżej. Jeśli chcesz dodać OR lub ORAZ, daj użytkownikowi opcję, wykryj to, a następnie przygotuj i wprowadź je do zapytania SOLR przed przekazaniem do SOLR. – Atomox

0

Solr niekoniecznie zwróci 7 wyników dla "dachu LUB mocowania", ponieważ jeden wynik może obejmować zarówno "dach" i "mocowanie". Załóżmy, że "dach" ma 3 wyniki, "mocowanie" ma 4, ale zarówno "dach", jak i "mocowanie" pojawiają się w 2 wynikach. Otrzymasz tylko 5 wyników wyszukiwania "dachu LUB mocowania", ponieważ Solr nie zwróci powielonych wyników.

Czy próbowałeś użyć zakodowanej przestrzeni URL ("% 20") zamiast znaku "+"?Jeśli domyślnym operatorem jest OR, nie powinieneś włączać tego operatora.

+0

roof% 20fixing również zwraca 0 wyników, rozumiem twój punkt, niezależnie od tego, czy był to 7 czy 5, spodziewałbym się przynajmniej 4 wyników. – Filype

+0

Czy to możliwe, że pole, na które szukasz, nie jest tokenem? –

+0

Mój ekran administracyjny mówi, że jest to pole Typ TEXT_EN – Filype

Powiązane problemy