solr - Solr Facet Alpha 数字排序与分数和小数
问题描述
我在 solr 中记录了一个字段,该字段具有数字值后跟一个单词。数值包括小数和分数。例如,该字段的值可以是
- 1 1/2 英寸
- 11英寸
- 两英寸
- 3/4 英寸
- 0.7英寸
- 0.8英寸
在solr中使用按索引排序,我将得到以下顺序:
- 0.7英寸
- 0.8英寸
- 1 1/2 英寸
- 11英寸
- 两英寸
- 3/4 英寸
如果我使用从https://www.andornot.com/blog/post/Make-numbers-behave-when-sorting-alphanumerically-in-Solr.aspx生成字母数字字段的解决方案, 我会得到以下顺序:
- 0.7英寸
- 0.8英寸
- 1 1/2 英寸
- 两英寸
- 3/4 英寸
- 11英寸
改进之处在于 Solr Facet 识别出 11 大于 2。但是,我需要的顺序应该是:
- 0.7英寸
- 3/4 英寸
- 0.8英寸
- 1 1/2 英寸
- 两英寸
- 11英寸
如何让 solr 按字母数字对小数和分数的构面值进行排序?
解决方案
简单的答案是:你没有。Solr 不知道 3/4 == 0.75。
但它是 Solr,因此可能有一个自定义解决方案,这取决于您拥有的分数数量。
- 当您只有一组固定的分数时,例如标准管道尺寸或扳手尺寸,您可以使用SynonymGraphFilter并定义要替换为相关数字的标准分数,例如
3/4 => 0.75
. 这产生了可排序性,并且还增加了搜索查询可以包含的内容(即两种格式)的灵活性。 - 当同义词没有帮助时,您当然可以全力以赴并编写自己的 Solr 过滤器。这实际上并不难,您可以在其中拆分输入字符串,让 Java 将分数解析为浮点数并将其写入令牌流。产生与解决方案 1 相同的好处。
推荐阅读
- unity3d - 如何正确使用 UNET
- ssas - 在 PowerBI 中合并来自多个 SSAS 多维数据集的数据
- wagtail - 如何迭代模板中的“页面”对象的属性?
- python - 图中的强连接组件 - networkx 库
- android - Android 应用在 onClickListener 上崩溃
- amazon-web-services - 当第一个实例达到 85% 的内存或 cpu 时,启动第二个实例 AWS,
- javascript - Firebase 云消息传递 - Django - 我如何为工作人员提供服务?
- php - PHP 5.6、xDebug、远程调试设置
- r - 使用较大数据集的索引值为数据框中的 NA 值创建指示变量
- bash - 如果仅向用户显示 COMPREPLY bash 完成选项的子字符串,则不要替换先前的输入