solr按照拼音首字母排序

有个标题字段,想按照拼音首字母排序,在solr方法里有一个方法

params.setSort("title",ORDER.asc);//排序字段,正序还是倒序

但这样设置好像结果不是我想要的,我想要的结果如下:
序号 标题 首字母
1 阿 a
2 国 g
3 人 r
4 中 z

在sql语句里能按照拼音首字母排序,我想知道在solr里能按照拼音首字母排序么?要怎么做,求指导???

阅读 5.5k
4 个回答
新手上路,请多包涵

你自己新建立一个以“title首字母“为值的新字段作为field不就行了吗,一般来说实际应用中都以自定义的字段作为排序条件

有个比较简单的做法,如下:

List<String> strs = new ArrayList<>();
strs.add("中");
strs.add("啊");
strs.add("坎");
strs.add("哈");
strs.add("少");
strs.add("发");
strs.add("顶");
strs.add("擦");
strs.add("鹅");
strs.add("巴");

// 排序
strs.sort(Collator.getInstance(Locale.CHINA));
// 打印
strs.forEach(System.out::println);

结果

啊 // A
巴 // B
擦 // C
顶 // D
鹅 // E
发 // F
哈 // H
坎 // K
少 // S
中 // Z

还可以使用pinyin4j来进行更复杂的排序

新手上路,请多包涵

提取文案的首字母,单独作为一列,使用copyfield作为原字段影子列,查询的时候对这个影子列进行排序

新手上路,请多包涵

请问楼主你这个solr中文首字母排序解决了吗

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题