Основы поиска на основе PHP - PullRequest
3 голосов
/ 28 марта 2009

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

Что бы я хотел иметь в рамках:

  1. Возможности полнотекстового поиска и поиска по каталогу
  2. Показать результаты, отсортированные по релевантности
  3. Возможность фильтровать результаты по категории
  4. Сортировка результатов по различным критериям
  5. Быстрый поиск
  6. Быстрая вставка не требуется

Поскольку на сайте будет довольно много статического контента (некоторый текст и каталог продуктов), я мог бы пойти с некоторым предварительно сгенерированным индексом.

Существуют ли (бесплатные) фреймворки, которые могли бы отвечать вышеуказанным требованиям? Предложения, советы и идеи приветствуются. Было бы здорово, если бы вы могли поделиться своим опытом внедрения поисковой системы.

Ответы [ 4 ]

1 голос
/ 30 марта 2009

обязательно используйте SOLR . Solr использует люцен. это может нам пригодиться для среднего / большого сайта ....

хорошо, что вы можете запросить результат в сериализованном формате php от solr ...

EDIT:

это то, что вы ищете, я полностью забыл об этом: Lucene Port To PHP от Zend

1 голос
/ 28 марта 2009

Посмотрите на Омега (на основе Xapian) - ссылка на страницу проекта Xapian

Вы можете интегрировать его в единое целое. Поскольку он основан на ослепительно быстром Xapian, он будет одним из самых быстрых вариантов, если вы установите его правильно. Он может делать все, что вы просите (в том числе релевантность результатов поиска, индексирование документов веб-сервера (HTML, PDF, Word, Excel, базы данных SQL ...), выполнять 'stemming' и т. Д. ...)

Другой (также очень хороший вариант) будет, конечно, Apache Lucene -> именно он входит в среду Zend, на которую вы ссылались («Поиск Zend»). Он может делать все те же трюки, хотя я лично предпочитаю Xapian.

Редактировать: имейте в виду, что Omega (и Xapian) - это GPL, тогда как Apache Lucene - это LGPL, если я правильно помню.

1 голос
/ 28 марта 2009

Вы можете использовать CMS, такую ​​как Joomla или Drupal , если на сайте будет только статический контент. Оба имеют хорошие поисковые системы. Однако поиск действительно зависит от того, какой у вас контент. Если это просто поиск по HTML страницы, это одно, а поиск в базе данных по конкретной модели # продукта - это другое, и в этом случае вам нужна система корзины покупок / электронной коммерции, а не CMS.

0 голосов
/ 28 марта 2009

Недавно я разработал многообещающий полнотекстовый поиск для использования с моим веб-приложением на основе Zend Framework - я не смог найти ни одного готового решения, отвечающего моим требованиям, поэтому я приложил все усилия и разработал простой (полнотекстовый) механизм поиска по ключевым словам. с нуля. Мне показались полезными следующие статьи:

http://devzone.zend.com/node/view/id/1304

http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html

Теперь у меня есть система, которая сопоставляет элементы на основе «текстовой сводки», которая создается во время сохранения (или обновления) элемента в базе данных. У меня есть таблица с именем kw_search_summary, которая содержит текстовую сводку по каждому элементу (сгенерированный скрипт), его идентификатор и идентификатор категории. Столбец 'summary' является полнотекстовым индексом mysql, поэтому я просто сопоставляю () сводный столбец AGAINST () с заданным выражением и отображаю результаты по релевантности. Код, который создает этот запрос, выглядит примерно так:

    $select = $this->db->select()
                 ->from(array('kwi' => 'kw_search_index'),
                        array('id','prodcatid','itemid','useradid','summary','relevance' => "match(summary) against($safeExp in boolean mode)"))
                 ->where("match(summary) against($safeExp in boolean mode)")
                 ->order('relevance desc')
                 ->limitPage($currentPage,self::RESULTS_PER_PAGE);

Надеюсь, это было хоть немного полезно.

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