найти документы, не имеющие значения для атрибута sql_attr_multi (Sphinx) - PullRequest
0 голосов
/ 23 октября 2009

в моей конфигурации с исходным кодом sphinx у меня есть атрибут вроде:

sql_attr_multi = uint categories from query; SELECT entry_id, cat_id FROM categories_entries

При запросе индекса сфинкса можно ли получить только записи, которые не имеют атрибута категории? В качестве хитрого исправления я выполнил запрос к базе данных, чтобы найти все потенциальные идентификаторы категории, а затем исключил эти атрибуты из результатов Sphinx:

$query = $DB->query("SELECT GROUP_CONCAT(cat_id SEPARATOR ',') AS categories 
    FROM categories WHERE category_group='3' 
    GROUP BY category_group");

$sphinxclient->SetFilter("categories", explode(",", $query->result[0]['categories']), true);

Это работает, но, похоже, должен быть лучший способ.

1 Ответ

2 голосов
/ 12 ноября 2009

Нет способа проверить, является ли коллекция MVA пустой для данного документа ... однако вы можете добавить другой целочисленный атрибут, который является COUNT для категорий, прикрепленных к каждому документу. Затем вы можете отфильтровать это значение, равное нулю или находящееся в определенном диапазоне.

...