Como pesquisar campos com curinga e espaços na pesquisa do Hibernate
Eu tenho uma caixa de pesquisa que realiza uma pesquisa no campo de título com base na entrada determinada, portanto, o usuário recomendou todos os títulos disponíveis, começando com o texto inserido. Ela é baseada na Pesquisa do Lucene e do Hibernate. Funciona bem até que o espaço seja inserido. Então o resultado desaparece. Por exemplo, eu quero que o "Learning H" me dê "Learning Hibernate" como resultado. No entanto, isso não acontece. você poderia por favor me aconselhar o que devo usar aqui em vez disso.
Construtor de Consultas:
QueryBuilder qBuilder = fullTextSession.getSearchFactory()
.buildQueryBuilder().forEntity(LearningGoal.class).get();
Query query = qBuilder.keyword().wildcard().onField("title")
.matching(searchString + "*").createQuery();
BooleanQuery bQuery = new BooleanQuery();
bQuery.add(query, BooleanClause.Occur.MUST);
for (LearningGoal exGoal : existingGoals) {
Term omittedTerm = new Term("id", String.valueOf(exGoal.getId()));
bQuery.add(new TermQuery(omittedTerm), BooleanClause.Occur.MUST_NOT);
}
@SuppressWarnings("unused")
org.hibernate.Query hibQuery = fullTextSession.createFullTextQuery(
query, LearningGoal.class);
Aula de hibernação:
@AnalyzerDef(name = "searchtokenanalyzer",tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class),
filters = {
@TokenFilterDef(factory = StandardFilterFactory.class),
@TokenFilterDef(factory = LowerCaseFilterFactory.class),
@TokenFilterDef(factory = StopFilterFactory.class,params = {
@Parameter(name = "ignoreCase", value = "true") }) })
@Analyzer(definition = "searchtokenanalyzer")
public class LearningGoal extends Node {