Пользовательский контент сайта широкий поиск - PHP / MySQL - PullRequest
0 голосов
/ 03 октября 2010

Для веб-сайта с пользовательским контентом, который я создаю, на нем есть много подразделов: фильмы, вакансии, люди, фотографии, почта и т. Д. Это похоже на портал Yahoo, но очень подробный с поиском информации, как будто я niching каккак можно глубже по теме в отличие от любого сайта там.У меня есть сайт, который разрабатывается в php и mysql codeignitor.Поиск может быть глобальным по всем дочерним сайтам и по отдельным подразделам, как мы видим на Google, Yahoo.В моей системе 22 возможных объекта пользовательского контента, каждое из которых имеет около 12-15 полей поиска, которые я называю метаданными объекта + я храню исторические данные (например, контроль версий пользовательского контента), которые я хочу включить в поиск.

Теперь вопрос о поиске по подразделам кажется разумным, потому что область действия ограничена, поэтому я думаю, что смогу хорошо справиться с MySQL.Я не предвижу никаких проблем с производительностью.Но для поиска по всему сайту он будет искать не только названия заголовков, но и ключевые слова, теги, описание, включая почту людей, комментарии, исторические данные и т. Д. Поэтому меня беспокоит производительность.Так как это стартап, у меня ограниченные аппаратные ресурсы, поэтому я должен на 100% зависеть от базы данных и кода.

Итак, каковы наилучшие практики для осуществления такого поиска с точки зрения кода и базы данных, и следует ли использовать смесь баз данных в зависимости от подузла?В настоящее время все хранится в 1 базе данных MySQL.Но я вижу проблемы, когда он может работать нормально для поиска людей, поиска фильмов и т. Д., Но не в том случае, если я включаю поиск по почте, географическое положение, поиск по историческим данным и даже необходимость поиска таких элементов, как теги фотографий, описания фотографий и т. Д. -> все частиглобального поиска могут быть проблемы с производительностью из-за большого числа объединений и количества строк.

Ответы [ 3 ]

1 голос
/ 03 октября 2010

Я не знаю о PHP, но для своих проектов ruby-on-rails я всегда использую поисковую систему Sphinx, чтобы делать такие вещи. Это отдельная поисковая система, которая индексирует вашу базу данных, и когда пользователь отправляет поисковый запрос, запрос сопоставляется с базой данных индекса Sphinx, а не с фактической базой данных. Это невероятно быстро и предлагает отличный контроль над индексированием / поиском.
Sphinx Search Engine
PHP: расширение Sphinx (не уверен, что это актуально)

0 голосов
/ 03 октября 2010

У меня нет точного решения, но я сталкиваюсь с подобной проблемой на моем веб-сайте в разработке.

Я начинаю думать, что решение может заключаться в определении того, где находится основная часть ваших запросов, и ограничении поисковых запросов этими запросами. Если поиск пользователя требует более подробных результатов (например, mail search, geo locations, historical data), вы можете отправить пользователя на второй запрос mysql. Сделайте так, чтобы большинство ваших пользователей выполняло поиск, используя более простые и низкоэффективные запросы, а остальные могут при необходимости использовать больше ресурсов.

Например, большинство пользователей моего сайта будут искать в новостях, календаре и разделах СМИ, поэтому мой поиск выглядит первым. Но посетители могут также искать других пользователей, группы, сообщения на форуме, теги / категории и так далее. Но я собираюсь позволить второму, более сложному сценарию справиться с этим.

0 голосов
/ 03 октября 2010

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

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