Solr Facet Alpha分数和小数的数字排序

时间:2019-01-09 12:44:37

标签: solr

我在solr中有一条记录,该记录的字段中包含一个数字值和一个单词。数值包括小数和小数。例如,此字段的值可以是

  • 1 1/2英寸
  • 11英寸
  • 2英寸
  • 3/4英寸
  • 0.7英寸
  • 0.8英寸

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

  • 0.7英寸
  • 0.8英寸
  • 1 1/2英寸
  • 11英寸
  • 2英寸
  • 3/4英寸

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

  • 0.7英寸
  • 0.8英寸
  • 1 1/2英寸
  • 2英寸
  • 3/4英寸
  • 11英寸

改进是Solr Facet认识到11大于2。但是,我需要的顺序应该是:

  • 0.7英寸
  • 3/4英寸
  • 0.8英寸
  • 1 1/2英寸
  • 2英寸
  • 11英寸

如何获取Solr以字母数字对小数和小数排序的方面值?

1 个答案:

答案 0 :(得分:1)

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

但是它是Solr,所以可能有一个自定义的解决方案,这取决于您所获得的分数的数量。

  1. 如果您只有一组固定的分数,例如标准管道尺寸或扳手尺寸,则可以使用SynonymGraphFilter并定义要用其相关编号替换的标准分数,例如3/4 => 0.75。这样既可以分类,又可以增加搜索查询可以包含的内容(即两种格式)的灵活性。
  2. 当同义词无用时,您当然可以全力以赴,write your own Solr filter。实际上并不难,您可以在其中拆分输入字符串,让Java将分数解析为浮点数并将其写入令牌流。产生与解决方案1相同的收益。