SphinxAPI SetFilter为false

时间:2011-04-19 16:03:09

标签: php mysql sphinx

我为我的搜索引擎安装了sphinx,它运行良好,但现在我正在尝试使用setFilter()添加一些额外的功能,这应该允许我做WHERE / AND子句,但每当我尝试搜索,它应该没有结果。

这是我的MySQL代码:http://pastebin.com/gFrvKumW

这是我的sphinx.conf:http://pastebin.com/XdppZ0MG

我的PHP代码:

<?php
    require("sphinxapi.php");
    $cl = new SphinxClient();
    $host = "localhost";
    $port = 9312;
    $index = "library";
    $q = "livres";
    $limit = 20;
    $ranker = SPH_RANK_PROXIMITY_BM25;
    $mode = SPH_MATCH_ALL;
    $cl->SetServer($host, $port);
    $cl->SetConnectTimeout(0);
    $cl->SetMatchMode($mode);
    $cl->SetRankingMode($ranker);
    //$cl->SetFilter('author_id', array(1));
    $res = $cl->Query($q, $index);
    die(var_dump($res));
?>

如果添加评论行不再有效。 我不明白为什么

1 个答案:

答案 0 :(得分:0)

如果您希望能够将某个字段用作过滤器,则需要将其添加到sphinx config filesql_attr中,这样如果您想按照autor id进行过滤,那么'我需要添加(假设作者的id是一个整数):

sql_query = SELECT `autors`.id, `books`.id, `books`.author_id, `books`.title, `books`.type, `authors`.name FROM `books`, `authors` WHERE `books`.author_id = `authors`.id
sql_attr_uint = autor_id

我希望这会有所帮助,祝你好运