使用Zend Lucene对范围查询进行排序

时间:2010-11-26 19:08:28

标签: zend-framework zend-search-lucene

根据documentation,Zend Lucene应按字典顺序排序。我发现事实并非如此。如果我有一个查询'avg:[050 to 300]',是的,它将返回该范围内的所有值,但它将根据文档ID而不是值对它们进行排序。

我发现find()函数可以接受其他参数,允许我按特定列排序(例如$hits = $index->find($query, 'avg', SORT_NUMERIC, SORT_ASC);)。但是,我正在动态创建$ query,并且不希望按'avg'对每个搜索进行排序。

当我进行范围搜索时,如何强制Lucene自动按字典顺序对结果进行排序?如果这不可能,我该如何动态地向查找函数添加排序字段?

1 个答案:

答案 0 :(得分:1)

在获得$hits的结果后,为什么不自行排序$index->find(...)?好的,这看起来像是一种解决方法,对于非常大的结果集来说会非常耗时,但我想在大多数情况下这是最简单的方法。