2009-12-15 4 views
5

Я использую PHP для доступа к Solr, и я удивляюсь одному.Solr PHP client vs file_get_contents?

Почему я должен использовать Solr PHP клиента, когда я могу использовать:

$serializedResult = file_get_contents(
         'http://localhost:8983/solr/select?q=niklas&wt=phps'); 

, чтобы получить результат в массивах, а затем распечатать их? Я действительно не понимаю. Есть ли более богатые возможности с PHP-клиентом?

ответ

4

Я думаю, что из-за следующих причин:

  • Гибкость
  • Обработка ошибок
  • Проблемы безопасности
  • расширяемость

Все вопросы являются головная боль этих готовых сценариев и рамки. Поэтому, если есть решение для определенной цели, я бы рекомендовал вам пойти с этим, а не делать все от себя.

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

+0

, но какая проблема была бы при использовании file_get_contents? он посылает и я вижу? он работает на каждом браузере и т. д., просто не получайте, какие проблемы безопасности/гибкости это может дать. – ajsie

+0

Чтобы повторить комментарий Сарфраза, вы можете сделать file_get_contents. Но вам все равно нужно разобрать синтаксический анализ, и если вы используете клиентскую библиотеку, вы получите 4 вещи, которые он указал! –

0

Я полагаю, что клиент solr просто анализирует результаты и предоставляет вам удобный способ передачи параметров (создание URL-адреса для вас и т. Д.).

0

Для использования file_get_contents() ... ваш php должен иметь разрешенную «allow_url_open». Если вы размещаете свой веб-сайт на определенных хостах, они не позволяют использовать эту функцию из-за того, что этот параметр отключен.

0

В некоторых случаях, однако, имеет смысл делать file_get_contents(). У SolrClient нет ничего для свертывания поля (это патч, недоступный в trunk), поэтому я должен либо написать свой собственный класс, который имитирует SolrClient и SolrQuery, если я не могу сделать это с помощью библиотеки PECL.

1

В библиотеке solr-php-client есть адаптер для file_get_contents (@see Apache_Solr_HttpTransport_FileGetContents), плюс другой для Curl. Библиотека solr-php-client представляет собой сложную структуру, которая позволяет вам делать гораздо больше, чем отправлять URL-адрес w/parameters, чтобы вы могли выполнить поиск. SPC обеспечивает предсказуемость, расширяемость и безопасность. Кроме того, solr-php-клиент записывается в стандарты Zend Framework, поэтому он дополняет любой проект ZF.

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