如何在lucene中对索引文件进行排序

时间:2013-06-18 07:23:33

标签: java sorting lucene indexing

我有一个由lucene制作的索引,其中的每个文件都有3个字段,其中一个是数字字段,这是我的频率。我在我的索引中搜索但在它之前我想用数字字段对它进行排序。在我搜索之前有什么方法可以通过lucene对它进行排序吗?

1 个答案:

答案 0 :(得分:3)

在搜索之前对进行排序并不是很有意义,因为Lucene正在创建一个反向索引来搜索,而不是存储和搜索一组连续的文档。

但是,听起来您想要运行搜索并获得已经按指定方式排序的结果。

这是通过将Sort传递给IndexSearcher.search来完成的,例如:

SortField field = new SortField("frequency", SortField.Type.FLOAT);
//Sorting, first, by "frequency", then by relevance score
Sort sort = new Sort(field, Sort.FIELD_SCORE);
searcher.search(query, maxDocs, sort);

该字段的名称让我想知道你是不是要重新发明轮子。 Lucene已经将术语频率归因于它的相关性得分。如果你想调整那种评分,最好是创建一个自定义Similarity类来为你计算分数,扩展TFIDFSimilarityDefaultSimilarity,并覆盖方法tf,特别是。