쿼리 할 수있는 Lucene 인덱스 설정이 있습니다. "필드가 빈 문자열과 같지 않음"상태로 작동하지 못합니다. "국가 태그"필드는 "{4ED2F7EE - 5C2A-418C-B2F6-236F94166BA1}"포함하는 경우 아래의 코드 표본에서 예를 들어, 나는 3 조건Lucene.net에서 빈 문자열 필드를 포함하고 쿼리하지 않습니다.
- 을 갖고 싶어.
- "국가 태그"필드는 빈 문자열이 아닙니다.
여기서 "날짜"범위는 "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 필드를 찾아야하는 조건이 필요하지 않습니다.
도움을 주시면 감사하겠습니다.
국가가없는 색인에 문서를 쓰는 데 사용하는 코드를 표시 할 수 있습니까? – Prescott
coutry 태그 필드를 문서에 여러 번 추가합니까? 그렇다면 MUST_NOT 절이 필요 없다. Btw MUST_NOT은 빈 문자열이 아닌 공백을 검사합니다. 마지막으로, 말하고있는 것에서는 빈 문자열이있는 필드를 추가하지 말고 필드에 문서를 추가하지 마십시오. –