正常にクエリできる Lucene インデックスのセットアップがあります。「フィールドが空の文字列と等しくない」という条件を機能させることができません。たとえば、以下のコード例では、3 つの条件が必要です
- 「国タグ」フィールドには「{4ED2F7EE-5C2A-418C-B2F6-236F94166BA1}」が含まれます。
- 「国タグ」フィールドは空の文字列ではありません。
「日付」の範囲は「20110101T000000」から「20121001T000000」までです。
WildcardQuery taggingQuery = new WildcardQuery(new Term("country tag", "*" + ShortID.Encode("{4ED2F7EE-5C2A-418C-B2F6-236F94166BA1}").ToLowerInvariant() + "*")); TermQuery taggingNotQuery = new Term("country tag", " ")); RangeQuery rangeQuery = new RangeQuery(new Term("date", "20110101T000000"), new Term("date", "20121001T000000"), true); BooleanQuery booleanQuery = new BooleanQuery(); booleanQuery.Add(taggingQuery, BooleanClause.Occur.MUST); booleanQuery.Add(taggingNotQuery, BooleanClause.Occur.MUST_NOT); booleanQuery.Add(rangeQuery, BooleanClause.Occur.MUST);
私はこれを間違っているか、クエリが何らかの形で間違っていると感じています。空のフィールドまたは null フィールドに注意する必要がある条件は必要ありません。
どんな助けでも大歓迎です!