Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Solr 将字符串字段排序为数字(int)_Solr - Fatal编程技术网

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

Solr 将字符串字段排序为数字(int),solr,Solr,在我的应用程序中,我有一个solr字符串字段,它可以包含像A1、A2、A10、A100这样的值 如果在该字段中应用排序函数,则得到的结果为A1、A10、A100、A2。但我的目的是以自然数的方式进行排序,如A1、A2、A10、A100,不包括索引值的字符部分。有什么方法可以做到这一点吗?或者您引入了一个新的fieldtype,并为该fieldtype引入了一个新的比较器,如本方法所述:(它们的用例稍微复杂一些,但是定义字段类型的主逻辑,使用自定义FieldComparatorSource,其中提

在我的应用程序中,我有一个solr字符串字段,它可以包含像A1、A2、A10、A100这样的值


如果在该字段中应用排序函数,则得到的结果为A1、A10、A100、A2。但我的目的是以自然数的方式进行排序,如A1、A2、A10、A100,不包括索引值的字符部分。有什么方法可以做到这一点吗?

或者您引入了一个新的fieldtype,并为该fieldtype引入了一个新的比较器,如本方法所述:(它们的用例稍微复杂一些,但是定义字段类型的主逻辑,使用自定义FieldComparatorSource,其中提供了一个比较器,应该适用于您的情况)。
在比较器中,您可以先对长度进行排序,然后再对值进行排序,或者在对字符串进行排序之前添加一些逻辑来区分字符串的各个部分。

当B30或C20出现在该系列中时会发生什么情况?一种方法是存储一个单独的字段,其中包含用于排序的标准化值,例如值:“A1”,标准化:“A00001“。但您必须编写该代码。@cheffe实际上我正在尝试向现有应用程序和数据添加排序功能。对于不同的类型,可能有A30和B30。但可以肯定的是,我不会在包含a*和B*的组合搜索结果中进行排序。因此,我正在寻找一种方法,可以排除第一个字符并进行int排序。@HectorCorrea有没有办法将该规范化或前导的“零”填充放在复制字段中?