我有一個Lucene索引設置,我可以很好地查詢。我只是無法獲得「字段不等於空字符串」的條件工作。例如,在下面的代碼樣本,我想有3個條件Lucene.net查詢包含和避免空字符串字段
- 其中 「國家標籤」 字段包含 「{4ED2F7EE-5C2A-418C-B2F6-236F94166BA1}」。
- 其中「country tag」字段不是空字符串。
「日期」範圍介於「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);
我有一種感覺,我這樣做不對還是我的查詢是錯誤的莫名其妙。我不應該需要一個條件,我必須注意空或空字段。
任何幫助表示讚賞!
您可以顯示用於將文檔寫入沒有國家/地區的索引的代碼嗎? – Prescott
您是否多次將文件標籤字段添加到文檔中?如果沒有,那麼你不需要MUST_NOT子句。順便說一句,你的MUST_NOT檢查一個空格,而不是空字符串。最後,從你所說的話,我建議你不要添加空字符串的字段,只是不要添加字段到您的文檔。 –