Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lucene 如何使用SOLR和ColdFusion 9.0.1按日期范围检索结果并进行排序?_Lucene_Solr_Coldfusion 9 - Fatal编程技术网

Lucene 如何使用SOLR和ColdFusion 9.0.1按日期范围检索结果并进行排序?

Lucene 如何使用SOLR和ColdFusion 9.0.1按日期范围检索结果并进行排序?,lucene,solr,coldfusion-9,Lucene,Solr,Coldfusion 9,我正在使用ColdFusion 9.0.1和集成的SOLR全文搜索引擎 我将日期存储在SQL Server数据库中,作为即将发生的事件的日期时间字段。我将这些记录插入到SOLR集合中,custom3和custom4字段分别是dateStart和dateEnd日期。用户希望根据日期范围查询集合,并按离现在最近的日期排序 第一个问题:如何设置custom1-4字段的数据类型?或者,我们可以吗?基于此帖子,该字段应设置为tdate或date,而不是字符串,以获得最佳性能。或者SOLR是否根据这篇文章自

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

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

第一个问题:如何设置custom1-4字段的数据类型?或者,我们可以吗?基于此帖子,该字段应设置为tdate或date,而不是字符串,以获得最佳性能。或者SOLR是否根据这篇文章自动使字段具有正确的数据类型

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

我不会告诉太多人这一点,但对你来说,我认为是时候抛弃CFINDEX/CFSEARCH,直接开始使用Solr了

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

以下是这些步骤的简要概述:

  • 使用CFAdmin创建一个新索引。这是创建所需所有文件的简单方法
  • 修改模式。模式位于[cfroot]/solr/multicore/[your index name]/conf中/
  • 架构的上半部分是
    。这定义了您可以使用的所有数据类型。下半部分是
    ,这是您将要进行大部分更改的地方。这很简单,就像一张桌子。为要包含的每个“列”创建一个字段。“索引”表示您希望使该字段可搜索。“存储”意味着您希望存储准确的数据,以便您可以使用它来显示结果。因为我使用的是CF9的ORM,所以除了主键之外,我不会存储太多内容,我在结果页面上使用loadEntityByPK()
  • 修改模式后,需要重新启动solr服务/守护进程
  • 用于索引数据(add方法是“插入或修改”样式的方法),并执行搜索
  • 要进行搜索,请查看此示例。它显示了如何按日期排序和筛选。我没有测试它,所以日期的格式可能是错误的,但你会明白的
    抱歉,这是一个非常笼统的回答,我希望我能让你走上正确的道路:)

    谢谢你的建议,香农!我会给你一次机会,然后向你汇报。看起来是个赢家。当使用CFSolrLib时,我不断得到“SOLR服务器没有响应”。显然,我没有正确设置SOLR的路径。在我的本地机器上工作,我可以打开并查看当前的收藏列表。因此,我有以下设置:路径应该是“/solr/yourinstancename”,我将路径更新为“/solr/solr test”。“solr test”是集合的名称。我可以在浏览器中导航到localhost:8983/solr/solr test/select?q=来查询集合,但在调用CFSolrLib中的resetIndex或add函数时,我仍然收到“solr服务器未响应”错误消息?当我通过调用get函数输出主机、端口和路径时,这些值都是正确的。还有其他建议吗?谢谢