Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Hibernate Search w praktyce Czyli wyszukiwanie pełnotekstowe w javowej aplikacji.

Podobne prezentacje


Prezentacja na temat: "Hibernate Search w praktyce Czyli wyszukiwanie pełnotekstowe w javowej aplikacji."— Zapis prezentacji:

1 Hibernate Search w praktyce Czyli wyszukiwanie pełnotekstowe w javowej aplikacji

2 Dobra wyszukiwarka Pomaga wyszukać właściwe wyniki ▫ Podpowiada ▫ Domyśla się intencji użytkownika Jest odporna na literówki „Wie” czego szukamy

3 Proste wyszukiwanie select * from x where x.y ilike ‘%param%’;

4 Proste wyszukiwanie ZaletyWady Łatwo zaimplementowaćKażdy wynik jest równorzędny Niewydajne przy dużych zbiorach Źle zaimplementowane dostarczy mylnych wyników

5 Większa trafność wyników? Ok! Bardziej złożony algorytm Tagi Kategorie Metadane

6 Wyszukiwanie pełnotekstowe?

7 Co wybrać ? Solr ElasticSearch Hibernate Search

8 Solr? Zapytania za pośrednictwem żądań HTTP XMLe, wszędzie XMLe Dodatkowy serwer SOLR Reguły indeksowania odseparowane od definicji obiektów domenowych

9 SOLR do PoC-owania?

10 Hibernate Search Co to jest? Kiedy używać? Dlaczego? Jak?

11 Hibernate Search = Lucene + komponenty SOLR + integracja z Hibernate

12 Kiedy używać Hibernate Search?

13 Dlaczego Hibernate Search? Integracja indeksów Lucene z operacjami w Hibernate Pracujemy na obiektach Bajecznie prosta integracja z aplikacją korzystającą z Hibernate

14 Zalety ?

15 Przyjazny DSL Wiele trybów wyszukiwania Procesory Warunkowe indeksowanie

16 Przyjazny DSL org.hibernate.search.query.dsl.QueryBuilder queryBuilder = fullTextSession.getSearchFactory().buildQueryBuilder().forEntity( MyClass.class ).get();

17 Tryby wyszukiwania Z użyciem słów kluczowych Rozmyte Z użyciem wildcardów Z użyciem dokładnej frazy Z wykorzystaniem zakresu Boolowskie Fasetowe

18 org.apache.lucene.search.Query luceneQuery = queryBuilder.keyword().onFields("someField", "otherField").matching(providedValues).createQuery( );

19 Tryby wyszukiwania Z użyciem słów kluczowych Rozmyte Z użyciem wildcardów Z użyciem dokładnej frazy Z wykorzystaniem zakresu Boolowskie Fasetowe

20 luceneQuery = queryBuilder.keyword().fuzzy().withThreshold(0.7f).onFields("someField", "otherField").matching(providedValues).createQuery();

21 Tryby wyszukiwania Z użyciem słów kluczowych Rozmyte Z użyciem wildcardów Z użyciem dokładnej frazy Z wykorzystaniem zakresu Boolowskie Fasetowe

22 Z wildcardami luceneQuery = queryBuilder.keyword().wildcard().onField("someField").andField ("otherField").matching(providedValues).createQuery();

23 Tryby wyszukiwania Z użyciem słów kluczowych Rozmyte Z użyciem wildcardów Z użyciem dokładnej frazy Z wykorzystaniem zakresu Boolowskie Fasetowe

24 luceneQuery = queryBuilder.withSlop(intValue).phrase().onField("someField").andField("otherField").sentence(unquotedSearchString).createQuery();

25 Tryby wyszukiwania Z użyciem słów kluczowych Rozmyte Z użyciem wildcardów Z użyciem dokładnej frazy Z wykorzystaniem zakresu Boolowskie Fasetowe

26 luceneQuery = queryBuilder.range().onField(numericField).above(x).below(x).from(x).to(y).excludeLimit().createQuery();

27 Tryby wyszukiwania Z użyciem słów kluczowych Rozmyte Z użyciem wildcardów Z użyciem dokładnej frazy Z wykorzystaniem zakresu Boolowskie Fasetowe

28 luceneQuery = queryBuilder.bool().must( queryBuilder.keyword().onField("someField").matching(someValue).createQuery() ).not().should( queryBuilder.range().onField("otherField").above(intValue).createQuery() ).createQuery();

29 Tryby wyszukiwania Z użyciem słów kluczowych Rozmyte Z użyciem wildcardów Z użyciem dokładnej frazy Z wykorzystaniem zakresu Boolowskie Fasetowe

30 FacetingRequest categoryFacetingRequest = queryBuilder.facet().name("categoryFacet").onField("category").discrete().orderedBy(FacetSortOrder.FIELD_VALUE).includeZeroCounts(false).createFacetingRequest(); hibernateQuery.getFacetManager().enableFaceting(categoryFacetingRequest);

31 Do dzieła

32 … org.hibernate hibernate-search Final …

33 A potem już z górki Implementacja ▫ Pól ▫ Analizatorów ▫ Zapytań ▫ Warunków indeksowania

34 Kodujemy (1) Prosta wyszukiwarka pełnotekstowa ▫ Mapowanie wybranych pól ▫ Podstawowe zapytanie ▫ Projekcja

35 Demo time (1)

36 Poprawiamy wyniki wyszukiwania

37 Kodujemy (2) Zwiększanie ważności wyniku ▫ Statyczne ▫ Dynamiczne ▫ Na czas zapytania Warunkowe indeksowanie Analizator

38 Demo time (2)

39 Co dalej? Projekcje (zagadnienia zaawansowane) Wydajność Fasetowe wyszukiwanie Filtry na zapytania …

40 Q&A time


Pobierz ppt "Hibernate Search w praktyce Czyli wyszukiwanie pełnotekstowe w javowej aplikacji."

Podobne prezentacje


Reklamy Google