我試過以下方法來組合查詢,但我不知道如何在這些查詢中添加(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);
什麼是你期望的結果與實際情況? BTW你的查詢看起來很好,雖然第一個例子使用範圍[1到2],第二個例子使用[1到3]。 – Keith
我需要使用AND運算符來加入兩個查詢(query1和pageQueryRange)並獲得所需的輸出(例如:{Skill_Summary:Java和經驗:[1到2]})。 –
實際上'+ Skill_Summary:Java + Experience:[1到2]'與'Skill_Summary:Java AND Experience:[1到2]'相同,因爲'+'符號基本上說兩個條件的條件都需要'true '。此外,使用'TermQuery'將字面匹配值,所以它將*不*匹配「java」或「JAVA」,這可能是問題... – rae1