Ignorando acentuação no Hibernate Search

hibernate

opa Pessoal,

Esses dias precisei fazer uma implementação com o Hibernate Search e passei aperto, pois precisava que acentuação fosse ignorado durante a pesquisa, iai ?

lets go…
Problema

É rapaz, parece que é trivial, mas nem tanto como é no Criteria. Olhando a documentação e fazendo uma pesquisa no velho Google acahei a solução, para que o Hibernate Search ignore acentuação durante as pesquisas.
Solução

O resultado é bem simples, apenas precisamos definir as seguintes anotações na classe de pesquisa veja:

@AnalyzerDef(name = "customAnalyzer",
tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class),
filters = {
@TokenFilterDef(factory = LowerCaseFilterFactory.class),
@TokenFilterDef(factory = ASCIIFoldingFilterFactory.class),
@TokenFilterDef(factory = SnowballPorterFilterFactory.class)
})
public class Professor{

}

E já ignora maiusculo/minusculo também.

Vou ficando por aqui e espero que tenham gostado do post de hoje.

abraços, see ya!!

Acessando atributos de outras classes no Hibernate search

hibernate

Olá Pessoal,

O post de hoje é bem simples, recentemente passei por um problema em como acessar os atributos de outra classe atraves do hibernate search.

Let go..
Problema

Você tem a classe Carro e essa classe tem um objeto Motor e vc precisa acessar o atributo versao que está na classe Motor. Como fazer isso com hibernate search? Parece que é simples né? Nem tanto gastei algumas horas até saber como fazer.
Solução

Vamos lá, você vai precisar na classe Carro fazer isso:

@Indexed
class Carro{

@IndexedEmbedded
private Motor motor;

}

E na classe Motor isso:

@Indexed
class Motor{

@Field(index=Index.YES, analyze=Analyze.YES, store=Store.NO) 
@ContainedIn
private String versao;
}

Agora na sua busca ficará assim:

QueryBuilder queryBuilder = fullTextSession.getSearchFactory().buildQueryBuilder().forEntity(Professor.class).get();

Query query = queryBuilder.keyword().onFields( "motor.nome")
.matching(descricao).createQuery();

FullTextQuery hibQuery = fullTextSession.createFullTextQuery(query, Carro.class, Motor.class);

Observe que o pulo do gato “motor.nome”.

Resolvido.

abraço, see ya!!!