【问题标题】:AND multiple values of a filter in sphinx狮身人面像中过滤器的多个值
【发布时间】:2016-10-27 17:15:02
【问题描述】:

我的 sphinx 索引 tag_id 中有一个属性,现在我想获取所有 tag_id 为 10 和 11 的记录

当我执行 $sphinxClient->setFilter('tag_id', array(10,11)) 时,它会获取所有 tag_id 为 10 或 11 是否可以对两个值进行 AND 而不是 OR?

【问题讨论】:

    标签: php search-engine sphinx


    【解决方案1】:
    $sphinxClient->setFilter('tag_id', array(10));
    $sphinxClient->setFilter('tag_id', array(11));
    

    对 setFilter 的多次调用是 ANDed :)

    【讨论】:

    • 我做了同样的事情,但是用不同的值设置相同的过滤器(tag_id)不起作用
    • 它对我有用。你可能还有其他问题。 tag_id 不是 MVA 吗?
    【解决方案2】:

    为什么两个不同的值会用AND返回结果??

    好像

    其中 id = 1 AND id = 2

    这永远不可能。 你能告诉我们你想要工作的场景吗?

    【讨论】:

    • 使用Sphinx,如果你的属性是MVA(多值属性)这种条件可以返回行:WHERE tag_id = 1 AND tag_id = 2
    【解决方案3】:

    就我而言,巴里的回答没有奏效。

    我检查了我过滤的内容 - 一个数组或不是数组。根据您需要的值的规范http://php.net/manual/en/sphinxclient.setfilter.php:“整数值的普通数组。”

    if( !empty( $filters['user_id'] ) ) 
    {
      if( is_array( $filters['user_id'] ) )
      {
        $this->sphinx->setFilter( 'user_id', $filters['user_id'] );
      }
      else
      {
        $this->sphinx->setFilter( 'user_id', array( (int) $filters['user_id'] ) );
      }
    } 
    

    【讨论】:

      猜你喜欢
      • 2012-03-12
      • 1970-01-01
      • 1970-01-01
      • 2012-10-06
      • 1970-01-01
      • 1970-01-01
      • 2012-03-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多