将字符串字段排序为数字(int)

时间:2019-04-10 10:59:37

标签: solr

在我的应用程序中,我有一个Solr字符串字段,其中可以包含A1,A2,A10,A100之类的值。

如果我在该字段中应用排序功能,则得到的结果为A1,A10,A100,A2。但是我的意图是使排序方式像A1,A2,A10,A100这样的自然数方式不包括我的索引值的char部分。有什么办法吗?

1 个答案:

答案 0 :(得分:2)

或者您引入一种新的字段类型,并为此引入一个新的比较器,如这种方法所述:http://sujitpal.blogspot.com/2011/05/custom-sorting-in-solr-using-external.html(它们的用例稍微复杂一些,但是定义字段类型的主要逻辑是,在其中使用自定义FieldComparatorSource(提供一个比较器)就可以解决您的情况)。 然后,可以在比较器中对长度进行排序,然后对值进行排序,或者在对字符串进行排序之前添加一些逻辑以区分字符串的各个部分。