Теги или поиск или оба - PullRequest
5 голосов
/ 10 мая 2011

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

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

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

Если я использую TAGS. Идея заключалась бы в том, чтобы я обрезал вход в слова и все метаданные, которые идут с ним, в TAGS. Схема была бы Toxi (многие ко многим), как рекомендовано людьми MySQL. Проблема, которую я имею с TAGS, состоит в том, что они не так гибки, как ПОИСК. Например, если CATS был тегом, но CAT не был, вы не могли бы «искать» его, потому что это не TAG. Если вы не используете поиск по тегам. В какой момент я беспокоюсь о производительности или почему бы просто не использовать прямой поиск. Вторая проблема сводит дубликаты и сходства TAG к минимуму. TAG сборка мусора, если хотите.

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

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

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

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

Приветствие.

1 Ответ

1 голос
/ 11 мая 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...