Sphinx PHP поиск «один ко многим» - PullRequest
0 голосов
/ 17 января 2011

У меня есть следующие таблицы mysql:

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;

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

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

Спасибо, Адриан.

1 Ответ

0 голосов
/ 17 января 2011

Вы можете определить для идентификатора категории целочисленный атрибут в Сфинксе:

sql_attr_uint = cat_id

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

...