我最近使用ComplexPhrase查询插件(https://issues.apache.org/jira/browse/SOLR-1604)修补了我的Solr 4.2.1。当我发出诸如以下的查询时:
my_text_field:"testin* compl*"~1 AND my_date_field:2013-12-12T04:58:53.732Z
我得到的结果包含我发出的文本查询以及我在my_date_field中发布的日期。
但是当我这样做时:
my_text_field:"testin* compl*"~1 AND my_date_field:[2013-01-01T02:58:53.732Z TO 2013-12-12T04:58:53.732Z]
我没有结果。
如果删除复合词解析器,事情会恢复正常(但我不支持复杂的词组查询)。
答案 0 :(得分:1)
好了一段时间后阅读lucene和solr代码我明白了。
此补丁创建了一个扩展Lucene QueryParser的Query Parser。 Lucene QueryParser不处理除术语范围以外的范围查询(某种方式中的简单字符串)。如果想要专门化QueryParser的行为,他必须提取字段类型并创建适当的范围查询(例如,数字的NumericRangeQuery等)。