我在solr中有以下内容
<str name="id">2</str> <arr name="parsed"> <str>2011-11-01 13:40:08.0</str> </arr> <arr name="person"> <str>Harsh Snehanshu | Apoorv Jain</str> </arr>
现在,如果我想搜索jain
,我只会使用此查询
http://192.168.1.135:8888/solr/MyCol/select/?q=*%3A*&version=2.2&start=0&rows=10&indent=on&facet=true&fq=person:jain
现在的问题是:我如何搜索已经过(大于)2011-11-01 13:00:00或(2011-11-01 12:30:00之间)解析的条目2011-11-01 13:30:00)??
谢谢你的帮助
答案 0 :(得分:3)
需要将已解析的字段定义为datefield。
e.g。
schema.xml -
TrieDateField的字段类型应该可用 -
<fieldType name="tdate" class="solr.TrieDateField" omitNorms="true" precisionStep="6" positionIncrementGap="0"/>
使用tdate字段类型映射prased字段为 -
<field name="parsed" type="tdate" indexed="true" stored="true"/>
因此,在编入索引时,响应会显示为<date name="parsed">2009-04-28T00:00:00Z</date>
这样您就可以使用date filter queries作为日期字段。
e.g。 fq=parsed:[1995-12-31T23:59:59.999Z TO 2007-03-06T00:00:00Z]
另外,对于搜索,最好使用q=person:jain
使用过滤器查询来限制文档而不是搜索。
答案 1 :(得分:0)
这些查询参数应该有效(未测试,而不是网址转义)
facet.field=parsed
f.parsed.facet.range.start=2011-11-01T12:30:00Z
f.parsed.facet.range.end=2011-11-01T13:30:00Z
说明:
facet.field=parsed
可在字段parsed
中启用分面。f.parsed.facet.range.start/end
定义该字段的下限和上限。有关详细信息,请参阅Solr documentation中的按范围构成部分。