Ho una casella di ricerca che esegue una ricerca sul campo titolo in base all'input dato, quindi l'utente ha raccomandato tutti i titoli disponibili a partire dal testo inserito. È basato su Lucene e Hibernate Search. Funziona bene finché non viene inserito lo spazio. Quindi il risultato sparisce. Ad esempio, voglio che "Learning H" mi dia "Learning Hibernate" come risultato. Tuttavia, questo non succede. potresti per favore consigliarmi cosa dovrei usare qui invece.Come cercare i campi con caratteri jolly e spazi in Hibernate Cerca
Query Builder:
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 classe:
@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 {
stampa la query per l'output sarà sicuramente aiutare .. – phani
E 'utile in effetti, ma non mi ha aiutato a capire il motivo per cui non ho risultati. Ad esempio, ho un obiettivo di apprendimento il cui titolo è "Teoria della teoria dell'apprendimento". L'output di due query è ** bQuery: + title: learning p * hibQuery: FullTextQueryImpl (titolo: learning p *) ** per la stringa di input "learning p". Trova valore se la stringa di input è "apprendimento". –
Ho anche provato a sostituire lo spazio con?, Ma non ha dato risultati. –