我有以下代码,用于使用Lucene查询在student_table中搜索“Keyword”。
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”的所有行,但我需要添加一个条件,例如:“where student_table.city_id= studentCity”
所以我可以通过城市ID限制查询结果。谢谢。
1条答案
按热度按时间to94eoyn1#
要添加city_id=studentCity条件,您需要一个TermQuery(以及索引文档时的相应字段类型)。然后,您必须将模糊查询和TermQuery Package 在一个BooleanQuery中,并将两个发生条件都设置为MUST。
这将是您传递给IndexReader / IndexSearcher的查询。
希望这对你有帮助!