我为我的搜索引擎安装了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));
?>
如果添加评论行不再有效。 我不明白为什么
答案 0 :(得分:0)
如果您希望能够将某个字段用作过滤器,则需要将其添加到sphinx config file的sql_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
我希望这会有所帮助,祝你好运