如何在ColdFusion 9.0.1中使用SOLR按日期范围检索结果和排序



我使用ColdFusion 9.0.1和集成的SOLR全文搜索引擎。

我有日期存储在我的SQL Server数据库作为datetime字段为即将到来的事件。我将这些记录插入到SOLR集合中,其中custom3和custom4字段分别是dateStart和dateEnd日期。用户希望根据日期范围查询集合,并按离现在最近的日期排序。

第一个问题:我们如何为custom1-4字段设置数据类型?或者,我们可以吗?根据这篇文章,优化Solr排序,字段应该设置为日期或日期,而不是字符串,以获得最佳性能。或者SOLR自动使字段有正确的数据类型基于这篇文章,排序日期在SOLR/Lucene性能问题?

第二个问题:如何构建搜索条件来提取记录?比如,2011年5月1日到2011年7月31日之间呢?

我并没有告诉太多的人,但是对于你来说,我认为是时候抛弃CFINDEX/CFSEARCH,并开始直接使用Solr了。

CF的实现是为索引带有某些属性的大块文本而构建的,而不是一个查询。如果您开始直接使用Solr,您可以创建自己的模式,并且对搜索的工作方式有更细粒度的控制。是的,这需要更长的时间来实施,但你会喜欢结果的。按日期筛选只是开始。

下面是对这些步骤的快速概述:

  1. 使用CFAdmin创建一个新的索引。这是创建所需文件的简单方法。
  2. 修改模式。模式在[croot]/solr/multicore/[你的索引名]/conf/
  3. 模式的上半部分是 <types> 。这定义了您可以使用的所有数据类型。下半部分是 <fields> ,这是您将进行大多数更改的地方。很简单,就像一张表。为要包含的每个"列"创建一个字段。"索引"意味着您希望使该字段可搜索。"存储"意味着您希望存储准确的数据,以便您可以使用它来显示结果。因为我使用的是CF9的ORM,所以除了主键之外,我不会存储太多,并且我在结果页面上使用loadEntityByPK()。
  4. 修改模式后需要重启solr服务/daemon。
  5. 使用http://cfsolrlib.riaforge.org/索引您的数据(添加方法是一个'插入或修改'风格的方法),并执行搜索。
  6. 要执行搜索,请查看此示例。它展示了如何按日期排序和筛选。我没有测试它,所以日期的格式可能是错误的,但你会明白的。http://pastebin.com/eBBYkvCW

对不起,这个答案太笼统了,我希望我能让你走上正确的道路:)

最新更新