首页 > 解决方案 > 按 attr_stream_size 对 solr 中的文档进行排序

问题描述

我在本地安装了 solr-8.3.1。

使用 files-example,我使用 post-utility 准备了一个 solr-core。索引的查询非常快,现在我想使用一些搜索文件时返回的属性,这些属性似乎是在上传过程中创建的。例如,我想按 attr_stream_size 排序。

有没有办法实现这一目标?

如果我直接在 solr-admin 的查询对话框中使用该字段:

按 attr_stream_size 排序

"metadata":[
  "error-class","org.apache.solr.common.SolrException",
  "root-error-class","org.apache.solr.common.SolrException"],
"msg":"can not sort on multivalued field: attr_stream_size of type: text_general",
"code":400}}

被退回。

标签: searchsolrlucenefull-text-search

解决方案


问题很清楚:

“无法对多值字段进行排序:类型的 attr_stream_size:text_general”

您应该对其应用排序的字段必须是简单值的、非标记化的,并且使用仅生成单个术语的分析器,或者将字段类型定义为字符串而不是text_general

文档说:

如果您希望能够对要对其内容进行标记以方便搜索的字段进行排序,请使用 Schema 中的copyField 指令来克隆该字段。然后在该字段上搜索并对其克隆进行排序。

例如,使用适当的 fieldType(即字符串或数字字段或使用 KeywordTokenizer 或创建新字段的文本)专门用于排序,例如使用plong fieldType :

<field name="size" type="plong" uninvertible="true" default="0" sortMissingLast="true" indexed="true" stored="true"/>

可排序字段可以由可搜索字段提供:

<copyField source="attr_stream_size" dest="size" />

这样您就可以在搜索attr_stream_size时按大小排序。


推荐阅读