我知道,Lucene documentation說如何使用Lucene搜索不包含術語的文檔?
注意:NOT操作符不能只用一個學期使用。例如, 以下搜索將返回任何結果:
NOT「雅加達阿帕奇」
不過,我想能夠形成返回不包含項的所有文檔的查詢。我已經考慮將MatchAllDocsQuery和TermQuery連在一起成爲BooleanQuery,但我似乎無法找到正確的組合。
如果我索引以下兩個文件
Doc0: content:The quick brown fox jumps over the lazy dog.
Doc1: (empty string)
查詢*:* -content:fox
返回這兩個文件時,我只想一個文檔。
的RegexQuery content:^((?!fox).)*$
建議由this StackOverflow answer返回一個文檔,但它似乎並沒有被因爲content:^((?!foo).)*$
返回一個文檔正常工作,以及時,我希望它返回兩個文件。
我意識到我想要做的性能影響。查詢只會在幾個文檔上運行,所以我不太在意性能。
有沒有辦法寫一個Lucene查詢來得到我想要的?
你的答案都爲我工作。 MatchAllDocsQuery是首選。起初,我實現了MatchAllDocsQuery,它沒有工作,所以我問了這個問題。當我得到虛擬領域的工作時,我切換回MatchAllDocsQuery進行完整性檢查,並且工作正常。我不知道爲什麼它以前不適合我。我必須得到一個錯誤的步驟。 – BennyMcBenBen