Проблема сфинксаФильтр - PullRequest
2 голосов
/ 17 июня 2011

У меня проблема со Сфинксом. У меня есть такая конфигурация:

sql_query               = \
        SELECT id, product_title, product_inf, product_code, ptype_name, title, cat, value, car \
        FROM Catalog_View;
sql_attr_uint           = car
sql_attr_uint           = cat

Catalog_View - это представление, которое собирает данные из нескольких таблиц. Это работает хорошо и не имеет никаких проблем. Я создал индекс с этой конфигурацией:

index src1
{
    source          = src1
    path            = /var/data/src1
    docinfo         = extern
    mlock           = 0
    morphology      = stem_en, stem_ru
    min_word_len        = 3
    charset_type        = sbcs
    min_prefix_len  = 0
    min_infix_len       = 3
    enable_star     = 1
}

И индексатор отлично справился со своей работой. Но когда я ищу пустой запрос (как этот '') и настраиваю два фильтра

$cl->SetFilter('cat',array(9));
$cl->SetFilter('car',array(2));

Я проиграл много матчей. Например, когда я использую SQL-запрос к Catalog_View, у меня есть 76 строк, и то же самое в Sphinx дает мне только 11 строк. Я не могу понять, что я делаю не так. Все вроде нормально, кроме фильтра. На самом деле у меня та же проблема с фильтрами, когда я ищу непустой запрос.

1 Ответ

0 голосов
/ 31 мая 2012

Я тоже наткнулся на это. Моим решением было сделать идентификаторы документов уникальными. Если у вас есть дублированные идентификаторы документов, возможный результат может быть таким же. Я полагаю, что Sphinx возьмет только первый уникальный документ, содержащий все дублированные данные.

...