java - Lucene Java 在 TextField 上排序 - 按字母顺序

标签 java sorting lucene

我正在向文档中添加一个字段:

doc.add(new TextField("productName", prod.getProductName(), Field.Store.YES));

但是当我进行搜索并尝试排序时,我无法按字母顺序排列:

Sort sorter = new Sort(); 
SortField sortField = new SortField("productName", Type.STRING, false);
sorter.setSort(sortField);

我做错了什么吗?如何按字母顺序排序?

最佳答案

SortField 不应被标记化。如果您需要对字段进行标记化以进行有效搜索,并对其进行排序,您可以在相同内容上创建一个单独的未标记化字段 (StringField),然后对其进行排序,例如:

doc.add(new TextField("productName", prod.getProductName(), Field.Store.YES));
doc.add(new StringField("productNameSort", prod.getProductName(), Field.Store.NO));

关于java - Lucene Java 在 TextField 上排序 - 按字母顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22516991/

相关文章:

java - Lucene 索引在大约 100 万个文件后卡住(nrm 文件变得越来越大......)

java - 从 JSON 获取数据

Java 不兼容类型 boolean 和 char

javascript - 按类别对 JSON 内容进行排序

swift - UIview array sorted return error in swift4 "Bool' expects 2 arguments, but 1 was used in closure body”

caching - 使用 CachingWrapperFilter 简单地缓存每个搜索是否可以?

java - 有没有办法在 LARQ 中创建多个索引并对它们执行 SPARQL

java - 运行web应用程序时出现问题

java - Spring + Hibernate session 生命周期

javascript - 如何根据项目的某些属性有效地对数组进行排序