首页 > 解决方案 > Solr Facet Alpha 数字排序与分数和小数

问题描述

我在 solr 中记录了一个字段,该字段具有数字值后跟一个单词。数值包括小数和分数。例如,该字段的值可以是

在solr中使用按索引排序,我将得到以下顺序:

如果我使用从https://www.andornot.com/blog/post/Make-numbers-behave-when-sorting-alphanumerically-in-Solr.aspx生成字母数字字段的解决方案, 我会得到以下顺序:

改进之处在于 Solr Facet 识别出 11 大于 2。但是,我需要的顺序应该是:

如何让 solr 按字母数字对小数和分数的构面值进行排序?

标签: solr

解决方案


简单的答案是:你没有。Solr 不知道 3/4 == 0.75。

但它是 Solr,因此可能有一个自定义解决方案,这取决于您拥有的分数数量。

  1. 当您只有一组固定的分数时,例如标准管道尺寸或扳手尺寸,您可以使用SynonymGraphFilter并定义要替换为相关数字的标准分数,例如3/4 => 0.75. 这产生了可排序性,并且还增加了搜索查询可以包含的内容(即两种格式)的灵活性。
  2. 当同义词没有帮助时,您当然可以全力以赴并编写自己的 Solr 过滤器。这实际上并不难,您可以在其中拆分输入字符串,让 Java 将分数解析为浮点数并将其写入令牌流。产生与解决方案 1 相同的好处。

推荐阅读