hibernate search w praktyce
Download
Skip this Video
Download Presentation
Hibernate Search w praktyce

Loading in 2 Seconds...

play fullscreen
1 / 40

Hibernate Search w praktyce - PowerPoint PPT Presentation


  • 132 Views
  • Uploaded on

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.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Hibernate Search w praktyce' - cadee


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%’;

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

Bardziej złożony algorytm

Metadane

Kategorie

Tagi

co wybra
Co wybrać?
  • Solr
  • ElasticSearch
  • HibernateSearch
slide8
Solr?
  • Zapytania za pośrednictwem żądań HTTP
  • XMLe, wszędzie XMLe
  • Dodatkowy serwer SOLR
  • Reguły indeksowania odseparowane od definicji obiektów domenowych
hibernate search
HibernateSearch
  • Co to jest?
  • Kiedy używać?
  • Dlaczego?
  • Jak?
slide11
HibernateSearch =

Lucene

+ komponenty SOLR

+ integracja z Hibernate

dlaczego hibernate search
DlaczegoHibernateSearch?
  • Integracja indeksów Lucene z operacjami w Hibernate
  • Pracujemy na obiektach
  • Bajecznie prosta integracja z aplikacją korzystającą z Hibernate
slide15
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
slide18
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
slide20
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
slide24
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
slide26
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
slide28
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
slide30
FacetingRequestcategoryFacetingRequest =

queryBuilder.facet()

.name("categoryFacet")

.onField("category")

.discrete()

.orderedBy(FacetSortOrder.FIELD_VALUE)

.includeZeroCounts(false)

.createFacetingRequest();

hibernateQuery.getFacetManager()

.enableFaceting(categoryFacetingRequest);

slide32

org.hibernate

hibernate-search

4.5.0.Final

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
kodujemy 2
Kodujemy (2)
  • Zwiększanie ważności wyniku
    • Statyczne
    • Dynamiczne
    • Na czas zapytania
  • Warunkowe indeksowanie
  • Analizator
co dalej
Co dalej?
  • Projekcje (zagadnienia zaawansowane)
  • Wydajność
  • Fasetowe wyszukiwanie
  • Filtry na zapytania
ad