Кто-то мог объяснить SOLR requestHandlers и responseWriters подробно?

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

Примечание: У меня есть веб-сайт объявлений, где новая реклама всегда обнаруживается сначала, таким образом сортирование не важно для меня, за исключением сортировки на цене и дате, никакие другие опции не доступны пользователям, и также сколько результатов на страницу.

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

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

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

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

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

Спасибо за всю Вашу справку!

28
задан 27 January 2010 в 13:55
поделиться

1 ответ

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

Надеюсь, это поможет вам начать работу.

52
ответ дан 28 November 2019 в 03:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: