Mam pole wyszukiwania, które wykonuje wyszukiwanie w polu tytułu na podstawie danych wejściowych, więc użytkownik polecił wszystkie dostępne tytuły rozpoczynające się od wstawionego tekstu. Opiera się na Lucene i Hibernate Search. Działa dobrze, dopóki nie zostanie wprowadzone miejsce. Wtedy wynik zniknie. Na przykład chcę, aby "Learning H" dało mi "Learning Hibernate" w wyniku. Jednak tak się nie dzieje. czy mógłbyś mi doradzić, czego tu użyć?Jak wyszukiwać pola za pomocą symboli wieloznacznych i spacji w wyszukiwaniu w trybie hibernacji
Konstruktor zapytań:
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);
hibernacji klasy:
@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 {
drukowanie zapytanie do wyjścia z pewnością pomogą Ci .. – phani
To jest rzeczywiście przydatne, ale nie pomogło mi zrozumieć, dlaczego nie mam wyników. Na przykład mam cel naukowy, którego tytuł brzmi "Nauka teorii prawdopodobieństwa". Wynik dwóch zapytań to ** bQuery: + title: learning p * hibQuery: FullTextQueryImpl (title: learning p *) ** dla ciągu wejściowego "learning p". Znajduje wartość, jeśli ciąg wejściowy to "uczenie się". –
Próbowałem również zastąpić spację przez?, Ale nie dało wyniku. –