2013-07-22 125 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