1

我在 solr 中有以下内容

<str name="id">2</str>
<arr name="已解析">
    <str>2011-11-01 13:40:08.0</str>
</arr>
<arr name="人">
    <str>苛刻的 Snehanshu | Apoorv 耆那教</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)??
谢谢你的帮助

4

2 回答 2

3

解析后的字段需要定义为datefield

例如

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>

这将允许您对日期字段使用日期过滤器查询

例如fq=parsed:[1995-12-31T23:59:59.999Z TO 2007-03-06T00:00:00Z]

同样对于搜索,最好使用q=person:jain.
使用过滤器查询来限制文档而不是搜索。

于 2011-11-02T11:20:08.450 回答
0

这些查询参数应该可以工作(未经测试且未经 url 转义

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定义该字段的下限和上限。
  • 日期应采用 ISO 8601 格式,但也NOW+1YEAR允许使用“日期数学”表达式。

有关更多详细信息,请参阅Solr 文档中的Facet by Range部分。

于 2011-11-02T11:26:58.077 回答