Ответ 1
Этот вопрос требует очень широкого ответа для ответа во всех аспектах. Есть очень хорошо определенные особенности, которые могут сделать одну систему выше другой для специального использования, но я хочу осветить основы здесь.
Я полностью рассмотрю Solr как пример для нескольких поисковых систем, которые работают примерно одинаково.
Я хочу начать с некоторых сложных фактов:
-
Вы не можете полагаться на Solr/Lucene в качестве безопасной базы данных. Есть список фактов, почему, но они в основном состоят из недостающих вариантов восстановления, отсутствия кислотных транзакций, возможных осложнений и т.д. Если вы решите использовать solr, вам нужно заполнить свой индекс из другого источника, например таблицы SQL. На самом деле solr идеально подходит для хранения документов, содержащих данные из нескольких таблиц и отношений, которые в противном случае требовали бы создания сложных объединений.
-
Solr/Lucene обеспечивает интеллектуальный анализ текста/генерации/полнотекстовый поиск/функции размытия. То, что вы просто не можете сделать с MySQL. Фактически полнотекстовый поиск в MySql ограничен MyIsam, и оценка очень тривиальна и ограничена. Взвешивание полей, повышение документов по определенным показателям, оценка результатов на основе близовости фразы, точное соответствие и т.д. - очень тяжелая работа практически невозможна.
-
В Solr/Lucene у вас есть документы. Вы не можете хранить отношения и процессы. Конечно, вы можете, конечно, индексировать ключи других документов внутри многозначного поля какого-либо документа, поэтому таким образом вы можете фактически сохранить отношения 1: n и сделать это в обоих направлениях, чтобы получить n: n, но его служебные данные. Не поймите меня неправильно, это прекрасно и эффективно для многих целей (например, для некоторых каталогов продуктов, где вы хотите хранить дистрибьюторов для продуктов, и вы хотите искать только те части, которые доступны у определенных дистрибьюторов или что-то в этом роде). Но вы достигаете конца возможностей с HAS/HAS NOT. Вы можете almonst не делать что-то вроде "получить все продукты, которые доступны как минимум у 3 дистрибьюторов".
-
Solr/Lucene имеет очень приятные функции фасетирования и анализ после поиска. Например: после очень широкого поиска, в котором было 40000 обращений, вы можете отобразить, что вы получите только 3 удара, если уточните свой поиск в сочетании с этим полем это значение и значение этого поля. Материал, требующий дополнительных запросов в MySQL, выполняется эффективно и удобно.
Итак, подведите итог
-
Мощность Lucene - это поиск и анализ текста. Это также ум очень быстро из-за структуры обратного индекса. Вы действительно можете сделать много обработки сообщений и удовлетворить другие потребности. Несмотря на то, что он ориентирован на документ и не имеет "запросов на графы", как в тройных хранилищах с SPARQL, базовые отношения N: M можно хранить и запрашивать. Если ваше приложение сосредоточено на поиске текста, вам обязательно нужно обратиться за Solr/Lucene, если у вас нет веских причин, таких как очень сложные, многомерные запросы фильтра диапазона, чтобы сделать иначе.
-
Если у вас нет текстового поиска, а что-то, где вы можете указать и щелкнуть что-то, но не вводить текст, хорошие старые реляционные базы данных, вероятно, лучший способ пойти.