【问题标题】:Sphinx Sorting not working狮身人面像排序不起作用
【发布时间】:2016-06-07 02:18:34
【问题描述】:

在我的表定义中,我有多个 int 字段,即 idverified(这是 int 而非 bool)和 filesize。我可以按id 排序,但无法按verifiedfilesize 排序。

// Include Sphinx API file
$s = new SphinxClient;
$s->setServer("localhost", 9312);
$s->setMaxQueryTime(300);
$s->SetSortMode(SPH_SORT_EXTENDED, '@id ASC');
$result = $s->query("test");

上面的代码可以正常工作,但如果我使用$s->SetSortMode(SPH_SORT_EXTENDED, '@verified ASC');$s->SetSortMode(SPH_SORT_EXTENDED, '@filesize ASC'); 则无法正常工作。

我尝试了类似的东西

$s->SetSortMode(SPH_SORT_EXTENDED, '@id ASC, @verified ASC, @filesize ASC');

而我的配置文件(部分)是这样的

sql_query     = \
 SELECT id, title, verified, filesize \
  FROM domains

 sql_attr_uint     =  id
 sql_attr_uint     =  verified
 sql_attr_uint     =  filesize

sql_query_info        = SELECT * FROM documents WHERE id=$id

编辑配置文件后,我使用以下命令重新索引数据

sudo indexer item --config /etc/sphinxsearch/sphinx.conf --rotate --print-queries

然后,然后使用 sudo service sphinxsearch restart 重新启动 Sphinx,但仍然没有运气。

我需要按已验证和文件大小对结果进行排序。我怎样才能实现它?

谢谢

【问题讨论】:

    标签: sorting ubuntu search-engine sphinx


    【解决方案1】:

    删除这一行:

    sql_attr_uint     =  id
    

    id 不应被声明为属性。它不是,它的文档ID :) 我认为 sphinx 只是自动忽略了这条线;但它的存在只会导致混乱(因为它什么都不做)

    否则应该试试

    $s->SetSortMode(SPH_SORT_EXTENDED, 'verified ASC');
    

    $s->SetSortMode(SPH_SORT_EXTENDED, '@id ASC, verified ASC, filesize ASC');
    

    @ 是特殊“内部”值的前缀。 id 被认为是特殊的(它的文档 id),所以应该有前缀。但是正常的属性不应该有它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-09
      • 2015-06-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多