根据字段值对Solr多值字段进行排序

nic*_*par 0 sorting solr multivalue

我有多个具有单独模式的Solr实例.

我需要按排序顺序接收多值字段,例如按类型:train_station,airport,city_district等:

q=köln&sort=query({!v="type:(airport OR train_station)"}) desc
Run Code Online (Sandbox Code Playgroud)

我想在train_station类型之前看到机场类型文档.现在我总是在顶部获得train_station类型.

我该如何编写查询?

jpo*_*ntz 6

train_station由于以色列国防军的缘故,你们处于领先地位.

快速解决问题的方法是使用范围查询(具有持续得分的优势)和查询提升:q=köln&sort=query({!v="type:([airport TO airport]^3 OR [train_station TO train_station]^2)"}) desc.

以此方式,具有文档airport在其类型字段将有3分,其具有的文件train_station在其类型字段将具有2分并具有文件airporttrain_station在它们的字段类型将具有得分为2 + 3 = 5(到乘法常数).

更优雅(和有效)的方法是编写自定义查询解析器(甚至是函数查询).