Я столкнулся с дилеммой в среде разработки. Это структура из трех таблиц:
- Содержимое таблицы (статьи, новости...)
- Табличные теги (теги для каждой статьи и новостных записей)
- Слова пропуска таблицы (такие слова, как «для», «получить», «до»...)
Основная идея заключается в том, чтобы получить записи контента в соответствии с текстовым поиском. Как?
Сначала удаляем слова из текстового поиска в соответствии с таблицей Skip Words, а затем сопоставляем остальные слова с таблицей тегов. Тем не менее, я хотел бы дать "более умный" результат, т.к.
второй шаг, я хотел бы сначала получить статьи, которые соответствуют всем оставшимся словам текстового поиска. Эти записи будут основной печатью.
Третий шаг, если нет совпадающих записей со всеми словами текстового поиска, то начинаю искать записи, которые соответствуют меньшему количеству слов, и веду их подсчет, и так далее, пока не получу список записи содержания.
Последний шаг показывает эти записи, упорядоченные в соответствии с количеством совпадений слов. Итак, учитывая этот процесс, я подумал об использовании:
- Временная таблица для загрузки данных со всех упомянутых шагов
- Использование одной хранимой процедуры со всей необходимой логикой
Вышеприведенное сравнение тегов с использованием условия «Нравится» ( and field like "word1%" and field like "word2%"
)
Тем не менее, меня беспокоит производительность. Это будет процесс на главной странице веб-сайта, который посещают более 1700 раз в час. Я был бы признателен, если бы вы могли объяснить свой опыт в отношении такого процесса (если он был)? или что, по вашему мнению, было бы лучшим способом реализации с учетом производительности?