2009-10-23 2 views
0

в моем исходном сфинкс конфигурации у меня есть атрибут как так:найти документы, не имеющие никакого значения для sql_attr_multi атрибута (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); 

Это работает, но кажется, что должно быть лучше.

ответ

2

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

+0

интересный подход. кажется немного менее взломанным, чем мое текущее решение. –

Смежные вопросы