Как добавить условие WHERE в запрос Lucene - PullRequest
0 голосов
/ 09 марта 2020

У меня есть следующий код для поиска «Ключевого слова» в student_table с использованием запроса Lucene.

public List search(String search, LONG studentCity) {
   FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(entityManager);
   QueryBuilder qb = fullTextEntityManager.getSearchFactory().buildQueryBuilder().forEntity(Spot.class).get();
   Query luceneQuery = qb.keyword().fuzzy().withEditDistanceUpTo(1).withPrefixLength(1).onFields("name", "description", "address").matching(search).createQuery();

Я получил все строки в student_table, которые содержат «Keyword», но мне нужно добавить условие такое: " где student_table.city_id = studentCity "

Таким образом, я могу ограничить результат запроса по City Id. Спасибо.

1 Ответ

1 голос
/ 10 марта 2020

Чтобы добавить раздел city_id = studentCity, вам понадобится TermQuery (и соответствующий тип поля при индексации документа). После этого вам нужно будет обернуть нечеткий запрос и TermQuery в BooleanQuery с обоими условия возникновения должны быть MUST.

Это будет запрос, который вы передадите своему IndexReader / IndexSearcher.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...