Date 使用ApacheSolr进行Drupal日期范围索引

Date 使用ApacheSolr进行Drupal日期范围索引,date,drupal,solr,lucene,field,Date,Drupal,Solr,Lucene,Field,我正在使用这些drupal模块 search_api search_api_solr date_range_formatter views 事实上,我的Solr/Drupal项目还需要很多其他模块来索引~100000个节点的内容 设置工作得很好,但我需要从Solr中获取日期范围字段的搜索结果,这就是我遇到的问题 不知何故,我一直在设置正确的运算符“between”和“notbetween”,使用“=”在这里会造成麻烦 我无法得到像这样的Solr查询 field[1 TO *] AND f

我正在使用这些drupal模块

search_api 
search_api_solr
date_range_formatter 
views 
事实上,我的Solr/Drupal项目还需要很多其他模块来索引~100000个节点的内容

设置工作得很好,但我需要从Solr中获取日期范围字段的搜索结果,这就是我遇到的问题

不知何故,我一直在设置正确的运算符“between”和“notbetween”,使用“=”在这里会造成麻烦

我无法得到像这样的Solr查询

field[1 TO *] AND field[* TO 10]
工作

当可用于搜索时,一种内容类型可以有多个日期范围

用户可以搜索开始日期和结束日期。daterange应在索引实体类型的每个单独daterange内匹配

假设其有效期为:

2015-10-01 to 2015-10-10
2015-11-01 to 2015-11-10
...
等等

要让我开始并以正确的方式解决问题,我首先需要知道:

在Drupal中存储日期范围以在Solr端建立索引的最佳实践是什么?日期范围是一种很好的方法,还是最好单独存储一个每天都有值的范围,如:

2015-10-01
2015-10-02
2015-10-03
...
Solr索引日期范围的最佳方法是什么

您建议Drupal中的哪种字段类型将值存储在实体类型中,以便能够将其发送给Drupal

我知道我不是第一个被这个折磨的人。详情可在此找到:

但幸运的是,这些补丁对我的设置来说都不是无错误的。我尽了最大努力让这一切顺利进行。现在,我正在寻找任何可能有助于追踪我最后一点错误的建议、总结或想法

非常感谢您的任何建议或想法


谢谢。

这不是一个循序渐进的解决方案。我只想给你一个想法,如何使其适应你的项目,并与search_api和search_api_solr保持兼容:

一种可能的解决方案是,在每个日期的一个字段中单独存储和索引实体中的日期,如下所示:

2015-10-01
2015-10-02
2015-10-03
...
使用后

function mymodule_search_api_views_query_alter(
view &$view,SearchApiViewsQuery &$query) {

 ...
   }
 }
添加缺少的查询条件,如

AND field_name = 2015-10-01 (as timestamp)
AND field_name = 2015-10-02
AND field_name = 2015-10-03
照顾好所有的条件

我希望这对需要类似解决方案的人有所帮助