Lucene Java的TextField排序 - 按字母顺序

4
我正在将一个字段添加到文档中,如下所示:

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);

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

这是一个有点有用的链接:http://mygeekjourney.com/index.php/2013/06/05/apache-lucene-how-to-sort-results-by-alphabetical-order/ - SoluableNonagon
1个回答

12

SortField不应被标记化。如果你需要对一个字段进行标记化以便高效搜索,并且也需要进行排序,那么你可以在同一份内容中创建一个单独的非标记化字段(StringField),并对其进行排序,例如:

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

谢谢,这非常有帮助。我希望不必再创建另一个字段来进行排序。 - SoluableNonagon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接