對于我的 Lucene 查詢,出于安全原因,我有一些先決條件。
if isValid()
return build.parse query
else
return null
我想換這個return null
。我需要像“空”查詢這樣的東西,一個不會做任何事情的查詢。
有沒有辦法建造它?
uj5u.com熱心網友回復:
為此,您可以利用“禁止”運算子 ( -
)。
例如:
-anything
...使用文字“任何東西”的地方 - 但您可以在此處使用任何您喜歡的文字。它可能是apples
您的索引中確實存在的一個術語。
如果您定義了默認欄位,則會針對該默認欄位執行此操作。
或者您可以在檔案中指定一個欄位:
-body:anything
補充說明
這是如何運作的?為什么不-anything
回傳任何結果?為什么它找不到所有不包含“任何東西”一詞的結果?
首先,-anything
強制所有包含的檔案得分為零(它們被禁止)。anything
但是在執行完之后,查詢中就沒有更多的子句了。沒有更多資訊可供 Lucene 使用,以確定應如何對任何剩余檔案進行評分。因此,所有檔案都沒有評分(它們實際上都是 0)。
標準查詢永遠不會回傳沒有分數的檔案。
“禁止”運算子通常與一個或多個附加查詢子句結合使用。在這里,我們單獨使用它,這就是我們可以利用這種行為的方式。
(您也可以NOT
用作 的同義詞-
。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/527500.html
標籤:爪哇Lucene