2013-07-22 162 views
0

我正在建立索引日誌,包括關卡,並且我厭倦了執行串聯查詢的"INFO OR DEBUG OR TRACE",有沒有特定於ElasticSearch或Lucene的方法,以允許您指定範圍是非數字的,所以我可以做一些像"level:>=INFO"非數字範圍搜索

+2

'INFO或調試或TRACE'是情理之中的事唯一的方法。兩種技術如何能夠得出「DEBUG」和「TRACE」都大於「INFO」的結論?如果您厭倦了重寫相同的查詢邏輯,請創建一個對象或工廠來爲您處理它。 – femtoRgon

+0

我想知道是否有一種Enum可用於Lucene與有序元素。我不認爲,放棄之前最好先問一下。 – Nicholas

+1

好的,我明白你以後的樣子。我沒有意識到任何東西,開箱即用,但擴展[MultiTermQuery](https://lucene.apache.org/core/4_1_0/core/org/apache/lucene/search/MultiTermQuery.html) ,並且重寫getTermsEnum來爲這種情況提供適當的[FilteredTermsEnum](https://lucene.apache.org/core/4_1_0/core/org/apache/lucene/index/FilteredTermsEnum.html)。 – femtoRgon

回答

0

在Lucene的你可以這樣做:

level:[DEBUG TO TRACE] 

但是這將使這是按字母順序排列這兩個之間的任何級別(包括它們,使用{}排除)。

更新:它可能需要一段時間,直到這被添加到Solr(如果加),但this issue會是你所需要的

+0

你可以用elasticsearch做同樣的事情,也可以使用[range query](http://www.elasticsearch.org/guide/reference/query-dsl/range-query/),它也適用於字符串。但是,它仍然依賴於字母順序,這不是@Nicholas希望的。 – javanna