SphinxAPI SetFilter false - PullRequest
       3

SphinxAPI SetFilter false

0 голосов
/ 19 апреля 2011

У меня установлен 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 голосов
/ 19 апреля 2011

Если вы хотите использовать поле в качестве фильтра, вам нужно добавить его в sql_attr в вашем файле конфигурации sphinx , так что если вы хотите фильтровать по идентификатору автора, вам нужно добавить (при условии, что идентификатор автора является целым числом):

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

Надеюсь, это поможет, Удачи

...