如何在Lucene查询中添加WHERE条件

5lhxktic  于 2022-11-07  发布在  Lucene
关注(0)|答案(1)|浏览(251)

我有以下代码,用于使用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限制查询结果。谢谢。

to94eoyn

to94eoyn1#

要添加city_id=studentCity条件,您需要一个TermQuery(以及索引文档时的相应字段类型)。然后,您必须将模糊查询和TermQuery Package 在一个BooleanQuery中,并将两个发生条件都设置为MUST。
这将是您传递给IndexReader / IndexSearcher的查询。
希望这对你有帮助!

相关问题