我希望在给定日期之后得到所有结果,你能用solr吗?
(http://lucene.apache.org/solr/)
现在结果是搜索整个结果集,我想在给定日期之后过滤任何内容。
更新的 这对我来说还不行。
我的回复文件:
尝试:
<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>
答案 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