【问题标题】:Solr sorting by result [closed]Solr按结果排序[关闭]
【发布时间】:2015-02-12 07:07:20
【问题描述】:

我已经索引了一个表格,结果如下所示

A
B
C
D
E
F
H
H
A
B

我想以这样的方式对结果进行排序,每次我都先得到 H,然后其余的应该按 asc 排序

H
H
A
A
B
B
C
D
so on...

我没有找到解决办法。请帮忙。

【问题讨论】:

  • 假设它是任何列的结果,即字母
  • sort by desc 表示Z 是第一还是A 是第一?在您的示例中,A 是 First。
  • 是的,你是对的,假设它是 asc。主要关心的是我想以这样一种方式进行排序,即我可以将特定文本放在第一位,然后再对其他文本进行排序。
  • 从数据库中获取的列值为arraystring ?

标签: php apache solr


【解决方案1】:

这取决于您用于获取结果的搜索查询。您可以修改您的查询参数,使其与您希望位于顶部的确切结果相匹配,并在 q.alt 参数中传递原始查询,然后应用您希望使用的排序。

请注意,要使用 q.alt,您需要使用 dismax 或 edismax 查询解析器。

【讨论】:

  • 谢谢。你能告诉我这将如何工作我需要在将 dismax 和 edismax 设置为 true 后传递 q.alt=H 吗?我这样检查过,没有得到想要的结果。
  • q.alt=[您的查询参数]:H&defType=edismax
【解决方案2】:
$alpha = array("A","B","C","D","E","F","H","H","A","B");

$first = array("H");
$alpha =array_diff($alpha, $first);
asort($alpha);
$alpha= $first + $alpha;

Demo

【讨论】:

  • 谢谢。但我想通过 solr 进行排序
猜你喜欢
  • 1970-01-01
  • 2012-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-20
  • 1970-01-01
  • 2018-01-14
  • 2016-01-09
相关资源
最近更新 更多