Üç alanlı (userId, title, description) dizinlenmiş bir nesnem var. Belirli bir kullanıcının tüm nesnelerini, başlık VEYA'nın açıklamasının belirli bir anahtar kelimeyi içerdiğini bulmak istiyorum.İç içe geçmiş boole sorgusu lucene API'siyle nasıl oluşturulur (bir AND (b OR c))?
Böyle bir şey var (ama bu besbelli yanlıştır):
WildcardQuery nameQuery = new WildcardQuery(new Term("name", filter.getSearch()));
WildcardQuery descQuery = new WildcardQuery(new Term("description", filter.getSearch()));
TermQuery userQuery = new TermQuery(new Term("user_id", u.getId()+""));
BooleanQuery booleanQuery = new BooleanQuery();
booleanQuery.add(new BooleanClause(name_query, Occur.SHOULD));
booleanQuery.add(new BooleanClause(desc_query, Occur.SHOULD));
booleanQuery.add(new BooleanClause(user_query, Occur.MUST));
Nasıl doğru kimliği ve başlığında veya açıklamasında arama ifadesi ile tüm nesneleri almak için kodunu değiştirmek wo?
TermQuery userQuery = new TermQuery(new Term("user_id", u.getId()+""));
BooleanQuery orQuery = new BooleanQuery();
orQuery.add(new BooleanClause(name_query, Occur.SHOULD));
orQuery.add(new BooleanClause(desc_query, Occur.SHOULD));
BooleanQuery andQuery = new BooleanQuery();
andQuery.add(new BooleanClause(userQuery , Occur.MUST));
andQuery.add(new BooleanClause(orQuery, Occur.MUST));