2013-10-08 28 views
0

我有一个日期字段,我想查询它们的年份与今天不同的所有事件。在SOLR中定义生日查询处理程序

所以,我在schema.xml中创建另一个领域:

<field name="myDate" type="date" indexed="true" stored="false" multiValued="true" /> 
<field name="myDateString" type="text" indexed="true" stored="false" multiValued="true" /> 

<copyField source="myDate" dest="myDateString"/> 

然后我在solrconfig.xml中定义的处理程序:

<requestHandler name="/onthisday" class="solr.SearchHandler"> 
    <lst name="defaults"> 
     <str name="echoParams">explicit</str> 
     <int name="rows">15</int> 
     <str name="df">myDateString</str> 
     <str name="wt">json</str> 
     <str name="indent">true</str> 
     <str name="q">*-08-10T*</str> 
     <str name="fl">*</str> 
    </lst> 
    </requestHandler> 

使用此处理程序,我能找到所有事件在10月8日:

http://localhost:8080/solr/article/onthisday?q=*-10-07T* 

但是,我想在solrconfig.xml文件中使用默认的今天值。我已经测试过这个(不起作用):

<str name="q">*-/MONTH-/DAYT*</str> 

如何使用字符串字段的当前日期设置默认查询值?

回答

0

您正在搜索的关键词是Date Math。您可以在Solr reference guide中找到几个示例。

您的具体问题可能是这样的:

birthdate:[* TO NOW/YEAR-1YEAR] 
+0

它返回的最后一年之前的所有文件,假设今天是2013年10月10日,我需要2012年10月10日,2011-10-10 ,2010-10-10,.... –