Pessoal,
Estou iniciando com o Hibernate Search e surgiu a seguinte dúvida:
Tenho um campo que está da seguinte forma:
@Lob
@Column(name = "descricao", nullable = false)
@Field(index = Index.YES, norms = Norms.YES, store = Store.YES, analyze = Analyze.YES)
private String descricao;
Quando faço a busca no Search está acontecendo o seguinte se busco por “sistema” e foi cadastrado no campos descrição “sistemas” ele não encontra ele só está encontrando pela string exata eu gostaria de encontrar por parte da string e saber se essa alteração eu faço na busca ou no mapeamento do index???
Segue minha busca:
@SuppressWarnings("unchecked")
@Override
public List<Vaga> findByCargoOrDescricaoLucene(String inputPesquisa,
Long idEstado, int qtdResult, int page) throws Exception {
// campos de pesquisa na busca otimizada
String[] campos = {CAMPO_DESCRICAO, CAMPO_CARGO};
// monta criteria
Criteria crit = session.createCriteria(Vaga.class);
crit.add(Restrictions.eq(CAMPO_ATIVO, true));
crit.addOrder(Order.desc(CAMPO_DT_CREATE));
if (idEstado != null && idEstado > 0) {
crit.add(Restrictions.eq(CAMPO_ESTADO_ID, idEstado));
}
// monta parser do lucene com os campos descricao e cargo
MultiFieldQueryParser parser = new MultiFieldQueryParser(Version.LUCENE_35, campos,
new StopAnalyzer(Version.LUCENE_35, getSetStopWords()));
parser.setDefaultOperator(Operator.OR);
Query luceneQuery = parser.parse(inputPesquisa);
FullTextSession luceneSession = Search.getFullTextSession(session);
FullTextQuery fullTextQuery = luceneSession.createFullTextQuery(luceneQuery, Vaga.class);
fullTextQuery.setMaxResults(qtdResult);
fullTextQuery.setFirstResult((qtdResult * (page + 1)) - qtdResult);
fullTextQuery.setCriteriaQuery(crit);
fullTextQuery.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
return fullTextQuery.list();
}