다음 쿼리를 결합하는 방법을 시도했지만이 쿼리에 (AND, OR, NOT) 연산자를 추가하는 방법을 모르겠습니다.Lucene.NET에서 연산자를 사용하여 용어 쿼리와 숫자 쿼리를 결합하는 방법은 무엇입니까?
BooleanQuery booleanQuery = new BooleanQuery();
Query query1 = new TermQuery(new Term("Skill_Summary", "Java"));
Query pageQueryRange = NumericRangeQuery.NewIntRange("Experience", 1, 2, true, true);
booleanQuery.Add(query1, BooleanClause.Occur.MUST);
booleanQuery.Add(pageQueryRange, BooleanClause.Occur.MUST);
var hits = searcher.Search(booleanQuery);
위 booleanQuery
의 결과는 여전히 +Skill_Summary:Java +Experience:[1 TO 2]
결과
String termQueryString = "Skill_Summary:\"Java\"";
Query termQuery = queryParser.Parse(termQueryString);
Query QueryRange = NumericRangeQuery.NewIntRange("Experience", 1, 3, true, true);
Query query = termQuery.Combine(new Query[] { termQuery, QueryRange });
var hits = searcher.Search(query);
예상 결과가 실제 결과와 비교됩니다. 첫 번째 예제에서는 범위 [1 TO 2]를 사용하고 두 번째 예제에서는 [1 TO 3]을 사용하지만 조회가 잘 보입니다. – Keith
두 개의 쿼리 (query1 및 pageQueryRange)를 결합하고 원하는 출력을 얻으려면 AND 연산자를 사용해야합니다 (예 : {Skill_Summary : Java AND Experience : [1 TO 2]}). –
실제로'+ Skill_Summary : Java + Experience : [1 TO 2]'는'Skill_Summary : Java AND Experience : [1 TO 2]'와'+'기호가 기본적으로 양쪽 조건 모두가 true '. 또한, 'TermQuery'를 사용하면 문자 그대로 값과 일치하므로 "java"또는 "JAVA"와 일치하지 않으므로 문제가 될 수 있습니다. – rae1