나는 3 개의 필드 (userId, title, description)로 인덱스 된 객체를 가지고있다. 제목이나 설명에 주어진 키워드가 들어있는 특정 사용자의 모든 개체를 찾고 싶습니다.lucene API를 사용하여 중첩 된 부울 쿼리를 만드는 방법 (AND (b OR c))?
나는 이런 식으로 뭔가를 (하지만 분명히 잘못) :
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));
어떻게 올바른 ID와 제목이나 설명에 검색 구문을 가진 모든 개체를 얻을 수있는 코드를 수정 우와?
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));