zaartix
Постоялец
- Регистрация
- 15 Май 2006
- Сообщения
- 73
- Реакции
- 27
- Автор темы
- #11
gregzem
как не умел, так и не умеет. Тут главное - корректная транслитерация
venetu
Я это к тому, что полнотекстовый индекс - это самый крайний вариант.
Индекс хорош только для выборок, но если в табилцу часто идут инсерты или апдейты - имеет смысл просчитать целесообразность каждого индекса, и уж тем более полнотекстового.
как не умел, так и не умеет. Тут главное - корректная транслитерация
venetu
если и делать так, то уж точно не через спец-символ. serialize для чего людам дан? А вообще этот запрос будет гораздо тяжелее, нежели мой, поэтому отпадаетя бы сделал проще. Выбрал бы символ, который точно не встречается в словах, например, '|', и записывал бы в таблицу все синонимы в одно текстовое поле через этот символ. Отдельно во второе поле можно вставлять символ-оригинал. Можно его же хранить тоже в этом текстовом поле, просто ставить первым. Итого, чтоб найти все синонимы к твоему слову, надо сделать такой вот селект:
Code:
SELECT txt FROM synons WHERE
CONCAT('|',txt,'|') ULIKE '%|слово|%'
потом explode('|',$txt) - и вуаля. У нас в массивчике все синонимы для данного слова, а первый элемент массива - это основное слово.
Чтоб не делать CONCAT при каждом селекте, можно в начало и конец txt добавлять '|' перед записью в базу и там хранить.
Ну и ключ на полнотекстовый поиск на это поле, естественно.
а вот тут возникает вопрос, у вас какой опыт работы с бд? имеется ввиду в реальной жизни, когда проекты становятся популярными (читай - дохрена запросов к бд в секунду)?А не факт, что будет медленнее, чем с иерархической структурой. С одной стороны у тебя строки длинные получаются, +полнотекстовый поиск и все дела, а с другой - сама структура таблицы в разы проще, и кол-во записей в ней меньше, и вообще..
Судя по тому, с какой скоростью работает обычный поиск по сайту (а это и есть поиск по ключевому слову, только таблица самая простая какая может быть) против скорости выборки сложными запросами чисел (мало данных, много связей) я лично голосую за этот способ, мне кажется будет быстрее. Опять же, по этому полю есть индекс - значит мускулу вообще работы не остается практически. Должно просто летать
Ну а с тем, что данный способ намного проще в реализации - я думаю никто и так спорить не станет. Так что делай так, если вдруг начнет тормозить - вот тогда и будешь чесать репу. А пока - "Не тратьте время на решение проблем, которых у вас нет" (с)
Я это к тому, что полнотекстовый индекс - это самый крайний вариант.
Индекс хорош только для выборок, но если в табилцу часто идут инсерты или апдейты - имеет смысл просчитать целесообразность каждого индекса, и уж тем более полнотекстового.
если бы мы с вами говорили за жизнь, то согласился-бы, а в программировании это бред полнейший, который сводит на нет само понятие оптимизации.Не тратьте время на решение проблем, которых у вас нет