Теги или поиск, или оба

Пример моего проекта.

Многие пользователи много записей (подумайте о размере твиттера)

Я хочу упростить пользователям поиск своих записей. Возникает вопрос: реализую ли я систему тегов или просто механизм поиска? Я провел изрядное количество исследований по этому вопросу, в частности, о требуемой схеме. Но у меня все еще есть несколько нерешенных вопросов.

Если я использую TAGS. Идея заключалась бы в том, чтобы разделить запись на слова и любые метаданные, которые идут с ней, в TAGS. Схема была бы Toxi (многие ко многим), как рекомендовано людьми mysql. Проблема с TAGS в том, что они не так гибки, как SEARCH. Например, если CATS был тегом, а CAT - нет, вы не смогли бы его «искать», потому что это не тег. Разве что, вы также реализуете поиск ПО ТЕГАМ. В этот момент я беспокоюсь о производительности или о том, почему бы просто не использовать прямой поиск. Вторая проблема - свести к минимуму дублирование и сходство тегов. Отметьте сборку мусора, если хотите.

Если я использую ПОИСК, мне придется использовать LIKE или FULLTEXT (хотя myISM не так хорош) и выполнять поиск по записям и их метаданным. В этом сценарии метаданные могут хранить теги как данные. Схема была бы намного проще, но я боюсь, что производительность будет намного хуже, чем при использовании тегов. Но, опять же, поиск стал более гибким, и мне не пришлось бы так беспокоиться о тегах для сбора мусора.

Что интересно, так это то, что я прочитал, что для повышения производительности поиска люди перешли на подход «поиск + теги». Пометка всех слов в записи, а затем поиск ТЕГОВ. Что я как бы намекал на то, что происходит с системой TAG. На данный момент грань между тегированием и поиском, кажется, становится нечеткой, и я действительно запутался. Итак, я пишу это в надежде, что вы сможете со мной разобраться.

У меня куча пользователей и куча мелких текстовых записей. Каким образом пользователи смогут выполнять поиск в нем? Как с точки зрения производительности, так и с точки зрения взаимодействия с пользователем.

Кроме того, мы будем очень признательны за любую дополнительную информацию по этому вопросу.

Ваше здоровье.


person Peach Passion    schedule 10.05.2011    source источник


Ответы (1)


Я бы посоветовал вам использовать специальную поисковую систему для этой функции, например Sphinx или KinoSearch. Получение релевантных результатов поиска при максимальной гибкости в отношении поисковых запросов - это отдельный бизнес (например, бизнес Google), поэтому я всегда использовал бы специальный сервис для этой задачи.

person Tudor Constantin    schedule 11.05.2011