Durchsuchen von Feldern mit Platzhaltern und Leerzeichen in der Ruhezustandsuche

Ich habe ein Suchfeld, das eine Suche nach Titelfeldern basierend auf der angegebenen Eingabe durchführt, sodass der Benutzer alle verfügbaren Titel empfohlen hat, die mit dem eingegebenen Text beginnen. Es basiert auf Lucene und Hibernate Search. Es funktioniert gut, bis Leerzeichen eingegeben wird. Dann verschwindet das Ergebnis. Ich möchte zum Beispiel, dass "Learning H" mir als Ergebnis "Learning Hibernate" gibt. Dies geschieht jedoch nicht. Könntest du mir bitte raten, was ich stattdessen hier verwenden soll?

Abfrage Ersteller:

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);

Hibernate-Klasse:

@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 {

Antworten auf die Frage(2)

Ihre Antwort auf die Frage