MYSQL с Coldfusion - Решения для создания поисковых возможностей? - PullRequest
1 голос
/ 10 января 2010

Я использую MySQL и ColdFusion. В настоящее время для поиска текстовых полей я использую LIKE в базе данных. К счастью, моя база данных пуста, но вскоре таблица заполнится, и я боюсь, что запрос LIKE SQL убьет мое приложение.

Я ищу решение, которое работает как с MySQL, так и с ColdFusion, которое позволит мне масштабно предлагать возможности поиска с моим приложением MySQL и ColdFusion.

Спасибо

Ответы [ 4 ]

5 голосов
/ 11 января 2010

Попробуйте использовать встроенную в ColdFusion поисковую систему Verity или Solr Search Engine в ColdFusion 9, то есть Apache Lucene. Удачи!

Обновление: Coldfusion 9.0.1 исправил несколько ошибок в поисковой системе Solr (apache lucene). Используйте это ..!

3 голосов
/ 11 января 2010

Вы вправе беспокоиться о производительности оператора LIKE, имеющей проблемы с масштабируемостью. Но имейте в виду две вещи.

Первое: column LIKE 'pattern%' работает хорошо, если ваш column проиндексирован. Это column LIKE '%pattern%', что может вызвать реальные проблемы с производительностью.

Во-вторых, в MySQL встроена хорошая система полнотекстового поиска. Смотри http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html

1 голос
/ 11 января 2010

Я не знаю, является ли это вариантом для вашего приложения, но я обычно резервирую значение «% pattern%» для расширенного поиска, определенного пользователем, когда можно ожидать снижения производительности.Когда это возможно, я выбираю по умолчанию параметры поиска, выбранные пользователем, «Начинается с».Я искал "% pattern%" в БД MySql 5 с 1,25 миллионами записей на сайте с низким трафиком.База данных, похоже, не является узким местом, даже на поле, которое не проиндексировано.Клиент хочет, чтобы все записи отображались на экране.Кажется, проблема в отображении более 10000 записей (смеется).БД может быть меньшей проблемой, чем вы думаете, в зависимости от трафика.

1 голос
/ 10 января 2010

Что заставляет вас думать, что это будет проблемой? Вы провели нагрузочное тестирование? Каков максимальный размер таблицы в худшем случае? Вы заполнили его до этого уровня и попробовали? Наконец, вам действительно нужно, чтобы это было "текст"? В MySQL есть несколько очень больших varchars. Что же делать вместо этого?

С моей точки зрения, похоже, у вас уже есть простейшее решение, которое может сработать. Может быть, вы должны доказать, что это не работает, прежде чем что-то перерабатывать?

Наконец, чтобы действительно ответить на ваш вопрос, вы можете кэшировать базу данных в поисковом индексе и затем выполнить его поиск (CF 9 также предлагает другой механизм индекса). Но вы потеряете это, будучи живым поиском.

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