2009-08-26 96 views
0

我想在给定的日期后得到所有结果,你可以用solr来做到这一点吗?我可以限制搜索到特定的日期范围吗?

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

现在的结果是搜索整个结果集,我要筛选给定日期后任何事情。

更新 这还不适用于我。

我返回DOC:

尝试:

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> 

回答

4

是的,你可以我假设你有要筛选上的日期值的字段。然后,你做

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

样本URL将是localhost:8983/Solr的/选择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查询字符串参数中。

日期的格式是ISO 8601

+0

它必须使用IO你为什么这样做yourdatefield:?而不是yourdatefield = – mrblah 2009-08-27 13:33:01

+0

IO你的意思是ISO?是的,这就是SOLR格式化日期的方式,而使用的原因是:而不是=是=表示HTTP上下文中的键和值之间的分隔,其中as:是SOLR上下文中键和值的分离。 – olle 2009-08-27 14:10:26

+0

Olle,看到我的更新,似乎没有工作。我发布了重新调用的xml文档节点,如果有帮助吗? – mrblah 2009-08-27 21:09:32

2

您可以添加一个自动时间戳的文件,因为它们使用索引:

<field name="timestamp" type="date" indexed="true" stored="true" default="NOW" multiValued="false"/> 

在schema.xml中。默认架构已经注释掉了,所以如果你复制了默认值,你只需要取消它的注释。

您可以添加它并使用olle的建议搜索模式来查找某个日期之后索引的文档。 (你不得不更新yourdatefield时间戳或任何你在XML名称领域

+0

非常感谢那个提示danivo! – mrblah 2009-08-27 13:13:49

+0

我没有看到在我的schema.xml中,我确实有:和<字段名= ”日期“ 类型= ”字符串“ 索引= ”真“ 存储= ”真“/>和<字段名= ”indexed_at“ 类型=” date“indexed =”true“stored =”true“default =”NOW“multiValued =”false“/>。和 mrblah 2009-08-27 21:11:18

+0

啊这将是indexed_at场 作为解决您的问题,我觉得欧莱与把indexed_at澄清正确答案:起始日期为*]在您的通话q =部分。 – danivovich 2009-08-28 13:10:23