/ / Solr Zapytanie z klauzulą ​​LIKE - solr, lucene, solrnet, edismax

Solr Query z LIKE Clause - solr, lucene, solrnet, edismax

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 № 1

Po 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.