Подтвердить что ты не робот

Может ли кто-нибудь подробно объяснить SOLR requestHandlers и responseWriters?

Во-первых, многие части solr wiki не очень полезны для тех, кто просто научился индексировать и искать поля. Кажется, это написано для экспертов! Он использует термины, которые ОТНОСИТЕЛЬНО к solr, поэтому очень трудно понять его, не читая его несколько раз.

ПРИМЕЧАНИЕ. У меня есть сайт объявлений, где всегда отображаются самые последние объявления, поэтому сортировка для меня не актуальна, за исключением сортировки по цене и дате для других пользователей недоступны другие параметры, а также количество результатов на странице.

Я знаю, что requestHandler - это способ "сделать некоторые вещи для запроса" правильно? Но как узнать, какой обработчик использовать трудно для меня. И как его настроить. Все, что я знаю, это обработчик, указанный в строке запроса, например "qt=my_handler".

Кроме того, те же вопросы относятся к responseWriters, который использовать? Как настроить?

Что еще я должен знать об этих обработчиках?

Как хороший и эффективный способ их использования?

Мне действительно нужно написать кое-что о том, как заставить solr внедряться в PHP-сайт после того, как я все это узнал.

Спасибо за вашу помощь!

4b9b3361

Ответ 1

В Solr RequestHandler по существу является плагином (модулем логики), который обрабатывает входящие запросы определенным образом.

Вместо того, чтобы "делать" некоторые вещи для фактически поискового запроса, обработчики запросов могут предоставлять функциональность за пределами запросов, например, например, импорт данных.

Обычно обработчики запросов в Solr настроены на конкретные конечные точки (т.е. URL-адреса) и не выбираются с помощью параметра qt. Однако поисковые обработчики могут использовать параметр типа запроса для обработки запроса определенным способом (т.е. Один обработчик может иметь дело с различными типами запросов).

Какой обработчик использовать, как правило, зависит от того, чего вы хотите достичь. Я бы посоветовал вам проверить список предоставленных обработчиков и сопоставить их описания (многие из них имеют Wiki-страницы) с тем, что вы хотите сделать.

Для запросов, отличных от по умолчанию SearchHandler, наиболее часто используемым обработчиком запросов является DisMaxRequestHandler (qt = dismax), который по существу обеспечивает поиск по нескольким полям с использованием другого взвешивания на основе значения поля. Это часто называют люди как "Google как" поиск.

Кроме того, вам может быть интересно посмотреть на MoreLikeThisHandler, который был разработан для предоставления удалений, похожих на определенный документ (например, из предыдущего результата поиска).

Обратите внимание, что в качестве источника путаницы DisMaxRequestHandler в более новых версиях Solr фактически предоставляется по умолчанию SearchHandler с типом запроса отпечатка.

Обработчики настроены в файле 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&lt;-1 5&lt;-2 6&lt;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 являются полями и повышающими для каждого поля. Вышеуказанная конфигурация будет искать по идентификатору, ключевому слову, названию, региону, стране и городу. Ознакомьтесь с соответствующей страницей 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" (хотя я не уверен, что это действительно лучшая работа как введение). Многие вещи, которые вы можете наилучшим образом выяснить по пробным ошибкам, а также терпение и некоторую онлайн-помощь.

Надеюсь, это поможет вам в этом.