Во-первых, много частей solr Wiki не очень полезно для кого-то, кто просто изучил, как индексировать и поля поиска. Кажется, что это записано для экспертов! Это использует термины, который является ОТНОСИТЕЛЬНО solr, таким образом, очень трудно понять это, не читая его несколько раз.
Примечание: У меня есть веб-сайт объявлений, где новая реклама всегда обнаруживается сначала, таким образом сортирование не важно для меня, за исключением сортировки на цене и дате, никакие другие опции не доступны пользователям, и также сколько результатов на страницу.
Я знаю a requestHandler
путь состоит в том, чтобы "сделать некоторый материал к запросу" право? Но как знать, какой обработчик использовать труден для меня. И как настроить тот также. Все, что я знаю, является обработчиком, определяется в строке запроса как"qt=my_handler
".
Кроме того, те же вопросы относятся responseWriters
, чтобы использовать? Как настроить?
Что еще я должен знать об этих обработчиках?
Как хороший и эффективный путь для использования их?
Я действительно должен описать что-то о получении solr реализованный в веб-сайт PHP после того, как я изучил все эти вещи.
Спасибо за всю Вашу справку!
В Solr RequestHandler - это, по сути, плагин (модуль логики), который обрабатывает входящие запросы определенным образом.
Вместо того, чтобы "делать" что-то в самом поисковом запросе, обработчики запросов могут предоставлять функциональность, выходящую за рамки запросов, например, импорт данных.
Обычно обработчики запросов в Solr настроены на определенные конечные точки (т.е. URL), а не выбираются через параметр qt. Однако обработчики, специфичные для поиска, могут использовать параметр типа запроса для обработки запроса определенным образом (т.е. один обработчик может работать с различными типами запросов).
Какой обработчик использовать, обычно зависит от того, чего вы хотите добиться. Я бы посоветовал вам ознакомиться со списком предоставляемых обработчиков и подобрать их описания (многие из них есть на страницах Wiki) к тому, что вы хотите сделать.
Для запросов, кроме стандартного SearchHandler, наиболее часто используемым обработчиком запросов является DisMaxRequestHandler (qt=dismax), который, по сути, обеспечивает поиск по нескольким полям с использованием различных весов, основанных на значимости полей. Люди часто называют это поиском "как в Google".
Также вам может быть интересно посмотреть на MoreLikeThisHandler, который был разработан для предоставления результатов поиска, похожих на определенный документ (например, из предыдущего результата поиска).
Обратите внимание, что в новых версиях Solr обработчик DisMaxRequestHandler на самом деле предоставляется стандартным SearchHandler с типом запроса dismax.
Обработчики настраиваются в solrconfig.xml:
<requestHandler name="dismax" class="solr.SearchHandler" >
<lst name="defaults">
<str name="defType">dismax</str>
<str name="echoParams">explicit</str>
<float name="tie">0.01</float>
<str name="qf">
id^10.0 keyword^1.5 title^1.0 region^0.5 country^0.5 city^0.5
</str>
<str name="pf">
keyword^1.5 title^1.0 region^0.5 country^0.5 city^0.5
</str>
<str name="bf">
</str>
<str name="mm">
2<-1 5<-2 6<90%
</str>
<int name="ps">100</int>
<str name="q.alt">*:*</str>
<!-- example highlighter config, enable per-query with hl=true -->
<str name="hl.fl">text features name</str>
<!-- for this field, we want no fragmenting, just highlighting -->
<str name="f.name.hl.fragsize">0</str>
<!-- instructs Solr to return the field itself if no query terms are
found -->
<str name="f.name.hl.alternateField">name</str>
<str name="f.text.hl.fragmenter">regex</str> <!-- defined below -->
</lst>
В данном случае qf - это поля и усиления, которые нужно применить для каждого поля. Приведенная выше конфигурация будет искать по id, ключевому слову, названию, региону, стране и городу. Посмотрите соответствующую страницу Wiki для получения дополнительной информации (применяется DisMaxRequestHandler).
Наиболее эффективный способ их использования - это, конечно, сначала узнать, чего именно вы хотите добиться, затем найти наилучший вариант обработчика, а затем настроить конфигурацию так, чтобы она обеспечивала результаты, которых ожидаете вы и ваше сообщество.
Писатели ответов - это плагины (модули логики), которые предоставляют способы и средства для написания ответов в определенных форматах. В настоящее время эта концепция применяется в основном к поиску, где вы будете иметь дело с производными от QueryResponseWriter, которые, в свою очередь, будут выбираться параметром формата ответа wt (в запросе).
Если вы работаете с PHP, то вас наверняка заинтересует генерация PHP-дружественных ответов на ваши запросы, используя wt=php или wt=phps.
Ответ php может быть оценен:
$code = file_get_contents('http://localhost:8983/solr/select?q=iPod&wt=php');
eval("\$result = " . $code . ";");
print_r($result);
а ответ phps может быть прочитан с помощью механизма сериализации PHP:
$serializedResult = file_get_contents('http://localhost:8983/solr/select?q=iPod&wt=phps');
$result = unserialize($serializedResult);
print_r($result);
Существует поддержка других языков (таких как Ruby, Python, Java Binary и т.д.), которые, по сути, были созданы для того, чтобы облегчить разработчикам интеграцию SOLR в их веб-приложения с помощью механизмов, которые быстрее, чем разбор XML или JSON.
Однако существуют и другие типы ResponseWriter'ов, которые фактически преобразуют ответ на основе шаблона (например, Velocity) или преобразования (например, XSLT). Это может быть полезно в определенных ситуациях, когда вы не хотите зависеть от другого приложения для обработки результатов запроса (например, XSLT непосредственно в XHTML).
Писатели ответов также настраиваются в solrconfig.xml, обычно вы включаете те, которые вас интересуют, например:
<queryResponseWriter name="xml" class="org.apache.solr.request.XMLResponseWriter" default="true"/>
<queryResponseWriter name="json" class="org.apache.solr.request.JSONResponseWriter"/>
<queryResponseWriter name="php" class="org.apache.solr.request.PHPResponseWriter"/>
<queryResponseWriter name="phps" class="org.apache.solr.request.PHPSerializedResponseWriter"/>
Наиболее эффективный способ их использования зависит от вашего окружения и того, чего вы хотите достичь. Очевидно, что если вы работаете на PHP, то phps может дать вам лучшие (легкий доступ через язык) и более быстрые (встроенный механизм сериализации, менее многословный) результаты. Если вы на Javascript, то json может оказаться подходящим вариантом и т.д.
Видите, SOLR - мощная и универсальная платформа :) Если вы хотите разобраться в этих джунглях, вам может пригодиться какая-нибудь книга, например "Solr 1.4 Enterprise Search Server" (хотя я не уверен, что это действительно лучшее введение). Во многих вещах вы сможете разобраться методом проб и ошибок, а также с помощью терпения и некоторой помощи в Интернете.
Надеюсь, это поможет вам начать работу.