2011-01-17 2 views
0

У меня есть следующие таблицы MySQL:Sphinx PHP Один-ко-многим Поиск

CREATE TABLE `video` (
`video_id` int(11) unsigned NOT NULL auto_increment, 
`title` varchar(255) NOT NULL default '', 
`description` text NOT NULL, 
PRIMARY KEY (`video_id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

CREATE TABLE `video_categories` (
`cat_id` int(11) unsigned NOT NULL auto_increment, 
`name` varchar(255) NOT NULL default '', 
PRIMARY KEY (`cat_id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

CREATE TABLE `video_category` (
`video_id` int(11) unsigned NOT NULL default '0', 
`cat_id` int(11) unsigned NOT NULL default '0', 
KEY `video_id` (`video_id`), 
KEY `cat_id` (`cat_id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

CREATE TABLE `video_tags` (
`tag_id` int(11) unsigned NOT NULL auto_increment, 
`video_id` int(11) unsigned NOT NULL default '0', 
`name` varchar(255) NOT NULL default '', 
KEY `video_id` (`video_id`), 
KEY `name` (`name`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

Я создал файл конфигурации сфинкса и я могу искать с PHP. Проблема в том, когда я хочу искать похожие видео, связанное с ними видео должно быть в той же категории, что и видео, которое я ищу. Я могу сделать это с помощью MVA и SetFilter (например, «категории», массив (3)), однако общее количество результатов совпадений является глобальным (мне нужно всего, чтобы отображать разбиение на страницы с помощью ajax), а не та, что в категории.

Любые идеи, как я могу искать видео (документы в сфинксе), которые находятся только в определенной категории?

Thanks, Adrian.

ответ

0

Вы можете определить для категории ID integer attribute в Сфинкса:

sql_attr_uint = cat_id 

А потом просто добавить @cat_id=12345 к вашему запросу.

+0

Работает ли это, даже если видео находится в нескольких категориях? – Adrian

+1

Для этого вы можете использовать многозначные атрибуты: http://sphinxsearch.com/docs/manual-0.9.9.html#mva –

+0

Я использовал MVA с SetFilter. Мне нужно общее количество связанных видео в указанной категории. MVA фактически выполняет глобальный поиск (во всех категориях), а затем я могу использовать SetFilter для фильтрации моих результатов. – Adrian

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