lucene 5.2.1排序注意事项及优化

2019-03-05 13:05|来源: 书生

之前使用lucene 3.6的时候,如果要根据某个字段排序,直接使用就可以了,如:

Sort sort =new Sort(new SortField("updateTime",SortField.Type.LONG,true));


升级到lucene 5.2.1的时候,这种方法不行了,要多创建一个NumericDocValuesField。

doc.add(new NumericDocValuesField("sortUpdateTime",field.getUpdateTime().getTime()));

然后使用SortField就可以了。


升级上线之后,发现排序很糟糕。原因是只按照更新时间排序,这样评分好像就不起效果了。现在是先按照打分排序,再按照更新时间来排:

Sort sort = new Sort(new SortField[] {SortField.FIELD_SCORE,new SortField("sortUpdateTime",SortField.Type.LONG,true)});


希望对各位有所帮助。



相关问答

更多

用tomcat构建lucene web应用程序(build lucene web application with tomcat)

我的解决方案 我将搜索引擎库包装到JAR文件中。 我下载了TomCat 8的压缩版本,并将其作为新的Runtime Enviroment安装到我的Eclipse环境中。 我使用TomCat 8服务器在Eclipse中创建了一个Dynamic Web Project(参见本视频课程 )。 我将JAR放入我的webapp(应该像WebContent\WEB-INF\lib\searchEngine.jar ) 我创建了一个Servlet来处理用户输入。 我使用非常简单的JSP页面完成了剩下的工作,嵌入 ...

关于lucene中使用中文分词器的问题

lucene最新的版本是5.X,你这3.X版本太低 虽然我看不到你的图报的是什么错,但是感觉不像是版本问题,不过可以试下其他版本 我用的是lucene4.5

lucene怎么读

[lu:sən]鲁森

lucene 怎么读

路(第一声)森(第三声)

lucene 使用步骤

lucene主要完成的是Indexing&Search功能,所以一般使用步骤: 建索引、优化索引 和搜索