У меня есть настройка индекса 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);
У меня такое чувство, что я делаю это неправильно или мой запрос как-то неверен. Мне не нужно условие, при котором я должен искать пустые или пустые поля.
Любая помощь приветствуется!