基于日期的SOLR排序:将日期存储为ISOString(),而toUTCString失败

时间:2012-07-02 17:50:30

标签: node.js solr full-text-search

在将日期字段存储到SOLR中时,我将Date()转换为toISOString()并接受。我尝试使用toUTCString存储,但它失败了。

现在在搜索时,我正在根据日期排序,我确实得到了结果,但这些都没有按降序排序,而是按混合顺序排序。

我尝试使用[NOW-1YEAR / DAY TO NOW / DAY + 1DAY]指定范围,但结果仍然相同。首先,我获得6天的文档,然后是30分钟的文档,然后是2个月的文档。

什么是正确的方法?

编辑: 这是我在schema.xml中添加的日期字段

   <field name="message_date" type="date" indexed="true" stored="false" />

以下是我在每次搜索时发送的参数

query = "*:*";
var options = {
            fq: '{!geofilt}',
            sfield: 'location',
            pt: latitude+','+longitude,
            d: 10,
            sort: ["message_date desc", "geodist() asc"],
            start: 0,
            rows: 10
        }

solrclient.query(query, options, function(err, solrRes){
....
});

这是服务器端的javascript,node.js代码。

1 个答案:

答案 0 :(得分:0)

上面的代码很好,它正在运行。问题是,从SOLR中检索结果后,我在我的数据库中进行了更精细的搜索,以获取更多详细信息,但未进行排序。 因此,在从SOLR中检索结果后,对Mongodb的结果进行了排序,并且结果很有效。

使用nodejs和solr模块是https://github.com/gsf/node-solr