Pracuję z Solr i chciałbym wiedzieć, czy tow zapytaniu można umieścić klauzulę LIKE. Na przykład chcę poznać wszystkie organizacje z tytułem „Nowy Jork”. W języku SQL byłoby to napisane jak nazwa LIKE „Nowy Jork%”.
Moje pytanie - jak napisać zapytanie typu LIKE w Solr?
Używam biblioteki SolrNet, jeśli to robi różnicę.
Odpowiedzi:
7 dla odpowiedzi № 1Po prostu wyszukujesz „Nowy Jork”, ale najpierw musisz odpowiednio skonfigurować analizator pola. Na przykład możesz zacząć od typu pola, takiego jak text_general
zgodnie z definicją w domyślny schemat Solr. Ten typ pola będzie tokenizował białe znaki i inne popularne separatory słów, a następnie zastosuje filtr stoperów, a następnie użyje małych liter, aby wyszukiwanie nie uwzględniało wielkości liter.
Więcej informacji na temat analizatory na wiki Solr.
6 dla odpowiedzi nr 2
Jeśli używasz Solr 3.1 lub nowszego, spójrz na Extended DisMax Query Parser
, który obsługuje zapytania z użyciem symboli wieloznacznych. Możesz włączyć to za pomocą <str name="defType">edismax</str>
w konfiguracji modułu obsługi żądań.
Następnie możesz użyć zapytania takiego jak title:New York*
z takim samym zachowaniem jak zapytanie z podobną klauzulą. Główną różnicą między moją odpowiedzią a odpowiedzią jest to, że możesz nawet wyszukiwać fragment słów za pomocą symboli wieloznacznych. Na przykład New Yorkers
pasuje w tym przypadku. Niestety możesz mieć problemy z rozróżnianiem wielkości liter, nawet jeśli używasz LowerCaseFilterFactory
. Spójrz tutaj wiedzieć więcej. Większość tych problemów zostanie naprawiona w wersji Solr 3.6 od czasu SOLR-2438 problem został rozwiązany.