Hibernate search w praktyce
This presentation is the property of its rightful owner.
Sponsored Links
1 / 40

Hibernate Search w praktyce PowerPoint PPT Presentation


  • 100 Views
  • Uploaded on
  • Presentation posted in: General

Hibernate Search w praktyce. Czyli wyszukiwanie pełnotekstowe w javowej aplikacji. Dobra wyszukiwarka. Pomaga wyszukać właściwe wyniki Podpowiada Domyśla się intencji użytkownika Jest odporna na literówki „Wie” czego szukamy. Proste wyszukiwanie.

Download Presentation

Hibernate Search w praktyce

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Hibernate search w praktyce

HibernateSearch w praktyce

Czyli wyszukiwanie pełnotekstowe w javowej aplikacji


Dobra wyszukiwarka

Dobra wyszukiwarka

  • Pomaga wyszukać właściwe wyniki

    • Podpowiada

    • Domyśla się intencji użytkownika

  • Jest odporna na literówki

  • „Wie” czego szukamy


Proste wyszukiwanie

Proste wyszukiwanie

select * from x wherex.yilike ‘%param%’;


Proste wyszukiwanie1

Proste wyszukiwanie


Wi ksza trafno wynik w ok

Większa trafność wyników? Ok!

Bardziej złożony algorytm

Metadane

Kategorie

Tagi


Wyszukiwanie pe notekstowe

Wyszukiwaniepełnotekstowe?


Co wybra

Co wybrać?

  • Solr

  • ElasticSearch

  • HibernateSearch


Hibernate search w praktyce

Solr?

  • Zapytania za pośrednictwem żądań HTTP

  • XMLe, wszędzie XMLe

  • Dodatkowy serwer SOLR

  • Reguły indeksowania odseparowane od definicji obiektów domenowych


Solr do poc owania

SOLR do PoC-owania?


Hibernate search

HibernateSearch

  • Co to jest?

  • Kiedy używać?

  • Dlaczego?

  • Jak?


Hibernate search w praktyce

HibernateSearch =

Lucene

+ komponenty SOLR

+ integracja z Hibernate


Kiedy u ywa hibernate search

Kiedy używać HibernateSearch?


Dlaczego hibernate search

DlaczegoHibernateSearch?

  • Integracja indeksów Lucene z operacjami w Hibernate

  • Pracujemy na obiektach

  • Bajecznie prosta integracja z aplikacją korzystającą z Hibernate


Zalety

Zalety?


Hibernate search w praktyce

  • Przyjazny DSL

  • Wiele trybów wyszukiwania

  • Procesory

  • Warunkowe indeksowanie


Przyjazny dsl

Przyjazny DSL

org.hibernate.search.query.dsl.QueryBuilder

queryBuilder =

fullTextSession.getSearchFactory()

.buildQueryBuilder()

.forEntity( MyClass.class )

.get();


Tryby wyszukiwania

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


Hibernate search w praktyce

org.apache.lucene.search.Query

luceneQuery =

queryBuilder

.keyword()

.onFields("someField", "otherField")

.matching(providedValues)

.createQuery();


Tryby wyszukiwania1

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


Hibernate search w praktyce

luceneQuery =

queryBuilder

.keyword()

.fuzzy()

.withThreshold(0.7f)

.onFields("someField", "otherField")

.matching(providedValues)

.createQuery();


Tryby wyszukiwania2

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


Z wildcardami

Z wildcardami

luceneQuery =

queryBuilder

.keyword()

.wildcard()

.onField("someField")

.andField ("otherField")

.matching(providedValues)

.createQuery();


Tryby wyszukiwania3

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


Hibernate search w praktyce

luceneQuery =

queryBuilder

.withSlop(intValue)

.phrase()

.onField("someField")

.andField("otherField")

.sentence(unquotedSearchString)

.createQuery();


Tryby wyszukiwania4

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


Hibernate search w praktyce

luceneQuery =

queryBuilder

.range()

.onField(numericField)

.above(x)

.below(x)

.from(x)

.to(y)

.excludeLimit()

.createQuery();


Tryby wyszukiwania5

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


Hibernate search w praktyce

luceneQuery = queryBuilder

.bool()

.must(

queryBuilder.keyword().onField("someField")

.matching(someValue).createQuery()

)

.not()

.should(

queryBuilder.range().onField("otherField")

.above(intValue).createQuery()

)

.createQuery();


Tryby wyszukiwania6

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


Hibernate search w praktyce

FacetingRequestcategoryFacetingRequest =

queryBuilder.facet()

.name("categoryFacet")

.onField("category")

.discrete()

.orderedBy(FacetSortOrder.FIELD_VALUE)

.includeZeroCounts(false)

.createFacetingRequest();

hibernateQuery.getFacetManager()

.enableFaceting(categoryFacetingRequest);


Do dzie a

Do dzieła


Hibernate search w praktyce

<dependency>

<groupId>org.hibernate</groupId>

<artifactId>hibernate-search</artifactId>

<version>4.5.0.Final</version>

</dependency>


A potem ju z g rki

A potem już z górki

  • Implementacja

    • Pól

    • Analizatorów

    • Zapytań

    • Warunków indeksowania


Kodujemy 1

Kodujemy (1)

  • Prosta wyszukiwarka pełnotekstowa

    • Mapowanie wybranych pól

    • Podstawowe zapytanie

    • Projekcja


Demo time 1

Demo time (1)


Poprawiamy wyniki wyszukiwania

Poprawiamy wyniki wyszukiwania


Kodujemy 2

Kodujemy (2)

  • Zwiększanie ważności wyniku

    • Statyczne

    • Dynamiczne

    • Na czas zapytania

  • Warunkowe indeksowanie

  • Analizator


Demo time 2

Demo time (2)


Co dalej

Co dalej?

  • Projekcje (zagadnienia zaawansowane)

  • Wydajność

  • Fasetowe wyszukiwanie

  • Filtry na zapytania


Q a time

Q&A time


  • Login