@AnjeyTsibylskij

Какой подход для поиска лучше?

Задача: сделать быстрый поиск по нескольким таблицам. Например, пользователь вводит в строку поиска слово «биткоин» и результатом должен быть список постов, тегов, пользователей.

  1. Первый вариант сделать отдельные запросы к каждой таблице (сущности)

    Плюсы:
    • Простая и прозрачная логика

    Минусы:
    • Сущностей (таблиц по которым нужно искать) гораздо больше, как следствие это дорогостоящая операция.

  2. Второй вариант сделать общую таблицу, в которую буду помещать строку сущности для поиска, тип и id всех сущностей.

    title | type | id
    Иван Иванов | user | 1
    Apple news | post | 54
    Toster | tag | 12

    Плюсы:
    • Быстрый поиск по одной таблице
    • По результатам выборки с одной таблицы, можно чётко узнать какие сущности есть, чтобы сделать отдельный запрос к конкретной сущности для выборки дополнительной информации. Например, вводим «Иван» и результат с одной таблицы говорит, что у нас есть только пользователи по такому запросу и не нужно лезть в посты и теги

    Минусы:
    • Таблица будет очень быстро расти
    • Нужно следить за всеми сущностями и обновлять название, если они изменились


Какой подход лучше с точки зрение производительности и правильности архитектуры БД? А также жду ваши решения.
  • Вопрос задан
  • 632 просмотра
Пригласить эксперта
Ответы на вопрос 1
qonand
@qonand
Software Engineer
Лучше не изобретать велосипед и воспользоваться ElasticSearch или Sphinx
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы