2010-04-28 90 views
3

假設我有一個名爲'Animal'的類的2個實例。Lucene.NET - 查找不包含指定字段的文檔

動物有3個字​​段:姓名,年齡,和類型

name字段爲空,所以之前我插入動物的實例作爲一個Lucene索引的文檔,我是否Animal.Name == NULL,和如果是這樣,我不會將其作爲字段插入到我的文檔中。如果我要檢索所有動物,我會看到Name字段不存在,我可以將其值設置爲null。

但是,有些情況下我想說「給我所有沒有指定名稱的動物」。在這種情況下,我想從我的動物索引中檢索不包含名稱字段的所有Lucene.NET文檔。

有沒有一種簡單的方法來與Lucene.NET做到這一點?我想遠離必須執行某種破解來檢查我的名稱字段是否具有'null'值。

回答

5

我相信你可以用Solr來做到這一點,但不能直接與Lucene做到這一點,所以在Lucene.Net中是不可能的。

這裏有兩種解決辦法,這是不那麼糟糕:

  1. 對於在該領域的NULL值的項目,加 自定義字符串像__NULL__或相似的,而不是忽略的領域。這將是可搜索的。
  2. 對於字段中具有空值的項目,添加一個字段,該字段不會出現在具有值的項目上。例如。 EMPTY_FIELD = "no"。這可以用在過濾器中。

希望這可以幫助你一點點的方式。

+0

只需使用保留關鍵字執行破解操作即可使用您的解決方案。現在我只需要弄清楚爲什麼我執行搜索時特殊字符處理不當。 我創建了另一篇文章,以找出爲什麼我得到特殊字符這種奇怪的行爲。 http://stackoverflow.com/questions/2732987/lucene-and-special-characters – Brandon 2010-04-28 20:41:48

相關問題