|
|
|
| Здраствуйте!
есть желание написать скрипт поиска без использования LIKE.
к примеру есть несколько таблиц, по которым нужно вести поиск
- page
- news
- product
я собираюсь сделать ещё две таблицы для ключевых слов и связей
keywords
- word_id - номер слова
- word_ text- само слово в нижнем регистре, уникальное поле
вторая таблица
keywords_search
- word_id - номер слова с keywords
- table_id - номер таблицы (page,news,product)
- row_id - номер записи в таблице
уникальными будут три поля одновременно, но в самих полях значения могут повторятся
как сгенерировать такие таблицы мне понятно - запускается скрипт, который каждую запись в каждой таблице по очереди разбивает на слова и вносит их в таблицы поиска
вопрос в том, как потом вносить в них изменения?
когда новую запись создаю но непроблема - просто добавится пару ключевых слов и связок
но если я вношу изменения в какую-то запись, то получается надо сначала удалить (или деактвировать) связи этой таблицы с ключевиками и потом их заново внести либо активировать неактывные связи
и ещё вопрос - можно ли используя такую структуру сделать релевантность поиска?
- есть вариант добавить в keywords_search столбик word_count - количество слов, и сортировать по количеству
P.S.
есть такой вариант с изменением текущей записи
- добавить в keywords_search столбик word_count
- когда внося изменения, то сначала все связки в таблице keywords_search связанные с редактируемой записью обнуляются, тоесть word_count изменить на 0
- после внесения изменения в запись заново создать массив ключевых слов, внести новые ключевые слова и если ключевых слов нету в связках, то добавить новую строку, а если есть то просто изменить количество слов в связке | |
|
|