Какая из лучших методик поиска в поисковых записях

У меня 10 000 000 записей, которые будут лучшим методом для поиска записей, в настоящее время им, используя полнотекстовый поиск, но это медленный, пожалуйста, предложите.

Существует не одноразовое решение, но вы можете попробовать:

сфинкс

Как вы реализуете полнотекстовый поиск для этой таблицы в 10+ миллионов строк, не отставайте от нагрузки и сохраняете актуальность? Сфинкс хорош в таких загадках.

Sphinx – полнотекстовая поисковая система, распространяемая по версии GPL 2. Коммерческая лицензия также доступна для встроенного использования.

Как правило, это автономная поисковая система, предназначенная для обеспечения быстрых, эффективных по размеру и релевантных функций полнотекстового поиска для других приложений. Sphinx был специально разработан, чтобы хорошо интегрироваться с базами данных SQL и скриптовыми языками. В настоящее время встроенные источники данных поддерживают выборку данных через прямое соединение с MySQL или PostgreSQL или с использованием механизма XML-канала (канал для индексатора в специальном формате на основе XML, который распознает Sphinx).

Что касается имени, Sphinx является аббревиатурой, которая официально декодируется как индекс фразы SQL. Да, я знаю о проекте CMU Sphinx.

http://www.sphinxsearch.com/

Lucene PHP (Part of Zend Framework): 

Zend_Search_Lucene – это текстовая поисковая система общего назначения, полностью написанная на PHP 5. Поскольку он хранит свой индекс в файловой системе и не требует сервера базы данных, он может добавлять возможности поиска практически на любой веб-сайт, ориентированный на PHP. Zend_Search_Lucene поддерживает следующие функции:

  • Ранжированный поиск – лучшие результаты, возвращенные сначала
  • Много мощных типов запросов: фразовые запросы, логические запросы, подстановочный знак
    запросы, запросы близости, диапазон
    запросов и многих других.
  • Поиск по определенному полю (например, название, автор, содержимое)

http://framework.zend.com/ http://framework.zend.com/manual/en/zend.search.lucene.overview.html

Это зависит от нескольких простых вопросов:

  • какие данные обрабатываются? (простые записи, такие как «Имя, Фамилия» или более сложные наборы данных?
  • как он структурирован? (обычная таблица базы данных? разделена?)
  • что вы ищете? (т.е. поиск имен в телефонной книге)

Поскольку я не работал с такими большими наборами данных, как это, вот некоторые идеи, которые могут работать:

Первый вопрос заключается в том, что эти записи являются статическими (например, geoip) или нет?

  • Я бы попытался оптимизировать мою базу данных так сильно, как могу (попробуйте использовать EXPLAIN, если вы используете MySQL)
  • Следите за всеми возможными запросами, попробуйте оптимизировать свою базу данных по этим запросам
  • Если индексы прекрасны, я пойду с каким-то кешем, где я бы сохранил предыдущие результирующие объекты. Это будет удобно, если ваша база данных не будет обновляться регулярно.
  • Вы можете выполнить указанное выше задание (например: наиболее часто используемые поисковые запросы и их результаты могут быть также сняты)
  • Попытайтесь оптимизировать эти идеи для своих нужд

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

Используйте Solr . Это lucene с некоторыми дополнениями, легко доступными по протоколу http. Он быстро растет в сравнении с любыми текстовыми запросами из mysql.