Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Hibernate Search w praktyce

Podobne prezentacje


Prezentacja na temat: "Hibernate Search w praktyce"— 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 Zalety Wady Ł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 Metadane Kategorie Tagi

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)
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()
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()
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 <groupId>org.hibernate</groupId>
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-search</artifactId> <version>4.5.0.Final</version> </dependency>

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 Zwiększanie ważności wyniku
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"

Podobne prezentacje


Reklamy Google