使用 Apache Solr 建立 Drupal 日期范围索引

Drupal date range indexing with Apache Solr

我正在使用这些 drupal 模块

search_api 
search_api_solr
date_range_formatter 
views 

事实上,还有许多其他模块可以让我的 Solr/Drupal 项目索引约 100000 个内容节点。

设置运行良好,但我需要从 Solr 获取日期范围字段的搜索结果,这就是我遇到的问题。

不知何故,我无法设置正确的运算符 "between" 和 "not between",而使用“<=”或“>=”在这里造成了麻烦。

我无法获得像

这样的 Solr 查询
field[1 TO *] AND field[* TO 10]

上班。

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

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

假设它从以下开始有效:

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?

我知道我不是第一个为此苦苦挣扎的人。可以在这里找到详细信息:

https://www.drupal.org/node/1783746

但幸运的是 none 这些补丁对我的设置没有错误。我竭尽全力让这件事继续下去。现在我正在寻找任何可能有助于追查我最后的错误的建议、总结或想法。

非常感谢任何建议或想法。

谢谢。

这不是一个循序渐进的解决方案。我只想给你一个想法如何使它适应你的项目并仍然与 search_apisearch_api_solr[=27 保持兼容=]:

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

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

照顾好所有条件。

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