Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Полнотекстовый поиск по нескольким таблицам.
Форумы портала PHP.SU » » Работа с СУБД » Полнотекстовый поиск по нескольким таблицам.

Страниц (1): [1]
 

1. Alho - 07 Декабря, 2012 - 21:53:44 - перейти к сообщению
Материал на сайте разбит по нескольким таблицам - новости, статьи и т.д. Каждый тип записей хранится в своей таблице. Уже добавил полнотекстовый индекс к полям основного текста.

Как правильнее организовать поиск? Создать представление из этих таблиц с типом записи, id и текстом? Вообще задействуются индексы в этом случае?
Или из php по очереди опрашивать каждую из таблиц?
Другие варианты?
2. EuGen - 07 Декабря, 2012 - 22:07:17 - перейти к сообщению
Alho пишет:
Другие варианты?

Я бы рекомендовал Sphinx
3. Alho - 07 Декабря, 2012 - 22:08:33 - перейти к сообщению
Знаю. Я бы его себе тоже рекомендовал, если бы не шаред-хостинги.
4. EuGen - 07 Декабря, 2012 - 22:11:41 - перейти к сообщению
К сожалению, MySQL не может строить индексы в представлениях (view)
Поэтому для использования индексов в конкретных таблицах придется делать запросы по отдельности и обрабатывать уже их в php. В случае с большой выборкой, разница, пожалуй, будет невелика.
5. esterio - 08 Декабря, 2012 - 12:17:21 - перейти к сообщению
Есть такое понятие как поиск по хешам(точное название не могу спомнить). Алгоритм:
Строка очищаеться от левого (точки, знаки, более 2 пробелов, перевожы на новую стоку, слова менее 3 символов и т.д.). Далее создаются хеши слов и заносяться в базу.
Когда происходит поиск действия те самые, только хеши не заносяться в базу а ищуться совпадения, и когда находяться то ето и есть результаты поиска. Тоько не забудьте рядом с хешами в базе заносить Ид и таблицу для того чтобы знать что виводить
6. EuGen - 08 Декабря, 2012 - 13:24:39 - перейти к сообщению
Не рискну себе даже представить, что произойдет, если подобный алгоритм попытаться применить к полнотекстовому поиску.
7. esterio - 08 Декабря, 2012 - 13:29:19 - перейти к сообщению
На одном проекте так и делали, только оптимизировали, тоесть подобние слова удаляли, брали только первые 40 слов, и если били совпадения, то делалии поиск глубже. И да использовали http://forum.dklab.ru/php/advises/HeuristicWithoutTheDictionaryExtractionOfARootFromRussianWord.html.

Другого выбора не было

 

Powered by ExBB FM 1.0 RC1