我可以将搜索限制在特定的日期范围吗?

时间:2009-08-26 23:04:59

标签: solr

我希望在给定日期之后得到所有结果,你能用solr吗?

http://lucene.apache.org/solr/

现在结果是搜索整个结果集,我想在给定日期之后过滤任何内容。

更新的 这对我来说还不行。

我的回复文件:

尝试:

http://www.example.com:8085/solr/select/?q=test&version=2.2&start=0&rows=10&indent=on&indexed_at:2009-08-27T13%3A15%3A27.73Z

<doc>
<str name="apptype">Forum</str>
<str name="collapse">forum:334</str>
<str name="content"> testing </str>
<str name="contentid">357</str>
<str name="createdby">some_user</str>
<str name="date">20090819</str>
<str name="dummy_id">1</str>
<int name="group">5</int>
<date name="indexed_at">2009-08-25T16:48:45.121Z</date>
<str name="rating">000.0</str>
<str name="rawcontent"><p>testing</p></str>
−
<arr name="roles">
<str>1</str>
<str>2</str>
<str>3</str>
<str>4</str>
<str>14</str>
<str>15</str>
<str>16</str>
</arr>
<int name="section">79</int>
<int name="thread">334</int>
<str name="title">testing</str>
<str name="titlesort">testing</str>
<str name="type">forum</str>
−
<str name="unique_id">
BLAHBLAH|357
</str>
<str name="url">/blahey/f/79/p/334/357.aspx#357</str>
<str name="user">21625</str>
<str name="username">some_user</str>
</doc>

3 个答案:

答案 0 :(得分:4)

是的,我可以假设您有一个字段,其中包含您要过滤的日期值。然后你做

yourdatefield:[2008-08-27T23:59:59.999Z TO *] 

示例网址是localhost:8983 / solr / select?q = yourdatefield:[2008-08-27T23:59:59.999Z TO *]

您希望将日期部分作为查询提交,所以q的值为

localhost:8983/solr/select/q=(text:test+AND+indexed_at:`[2009-08-27T13:A15:A27.73Z TO *`])

因此整个查询包含在q querystring参数中。

日期格式为ISO 8601。

答案 1 :(得分:2)

您可以使用以下文件为文档添加自动时间戳:

<field name="timestamp" type="date" indexed="true" stored="true" default="NOW" multiValued="false"/>
schema.xml中的

。默认架构已将其注释掉,因此如果您复制了默认架构,则只需取消注释即可。

您可以添加它并使用olle建议的搜索模式来查找在特定日期之后编入索引的文档。 (您必须使用 timestamp 或您在xml中为该字段命名的任何内容更新 yourdatefield

答案 2 :(得分:0)

您需要创建一个比较日期的查询,以下是查询的语法: http://wiki.apache.org/solr/SolrQuerySyntax

以下是您在查询中进行日期比较的方法: http://lucene.apache.org/solr/api/org/apache/solr/util/DateMathParser.html