java - with - Qualcuno potrebbe spiegare la richiesta SOLRHandlers e responseWriters in dettaglio?



php insert data into mysql (1)

In Solr, RequestHandler è essenzialmente un plugin (modulo di logica) che gestisce le richieste in arrivo in un modo particolare.

Piuttosto che "fare" qualcosa per la query di ricerca effettiva, i gestori delle richieste possono fornire funzionalità al di là delle query, come ad esempio l'importazione dei dati.

Normalmente i gestori di richieste in Solr sono configurati per essere endpoint specifici (ad es. URL) e non selezionati tramite il parametro qt . Tuttavia, i gestori di ricerca specifici possono utilizzare il parametro del tipo di query per gestire una query in un modo specifico (ovvero un gestore può essere in grado di gestire vari tipi di query).

Quale gestore utilizzare, normalmente dipenderà da ciò che si desidera ottenere. Ti suggerisco di controllare l'elenco dei gestori forniti e di abbinare le loro descrizioni (molte hanno pagine Wiki) a ciò che vuoi fare.

Per le query, oltre al valore predefinito SearchHandler, il gestore di richieste più comunemente utilizzato è DisMaxRequestHandler ( qt = dismax ), che essenzialmente fornisce una ricerca su più campi utilizzando una ponderazione diversa in base alla significatività del campo. Questo tipo di ricerca viene spesso indicato da persone come "simili a Google".

Inoltre, potresti essere interessato a guardare MoreLikeThisHandler, che è stato progettato per fornire hit simili a un documento specifico (ad esempio da un precedente risultato di ricerca).

Si noti che come fonte di confusione, DisMaxRequestHandler nelle versioni più recenti di Solr viene effettivamente fornito da SearchHandler predefinito con un tipo di query di dismax .

I gestori sono configurati in 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>

In questo caso, qf sono i campi e gli boost da applicare per ogni campo. La configurazione di cui sopra cercherà ID, parola chiave, titolo, regione, paese e città. Controlla la pagina Wiki corrispondente per maggiori informazioni (si applica DisMaxRequestHandler).

Il modo più efficace per utilizzarli è sicuramente sapere innanzitutto cosa si vuole ottenere esattamente, quindi trovare la migliore corrispondenza in termini di gestore e quindi sintonizzare successivamente la configurazione per fornire i risultati che si attendono voi e la vostra comunità.

I writer di risposta sono plug-in (moduli di logica) che forniranno i modi e i mezzi per scrivere le risposte in formati specifici. Attualmente questo concetto si applica principalmente alle ricerche, dove si tratterà di derivati ​​di QueryResponseWriter, che a loro volta saranno selezionati dal parametro di formato di risposta wt (nella query).

Se stai lavorando con PHP, allora sarai sicuramente interessato a generare risposte amichevoli PHP alle tue richieste, usando wt = php o wt = phps .

La risposta php può essere valutata:

$code = file_get_contents('http://localhost:8983/solr/select?q=iPod&wt=php');
eval("\$result = " . $code . ";");
print_r($result);

e la risposta ai php può essere letta con il meccanismo di serializzazione di PHP:

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

Esiste il supporto per altri (come Ruby, Python, Java Binary, ecc.), Che sono stati essenzialmente creati per facilitare agli sviluppatori l'integrazione di SOLR nelle loro applicazioni web usando meccanismi che sono più veloci dell'analisi di XML o JSON.

Tuttavia, ci sono anche altri tipi di ResponseWriter che trasformano la risposta in base a un modello (es. Velocity) o una trasformazione (es. XSLT). Ciò può essere utile in determinate situazioni, in cui non si desidera dipendere da un'altra applicazione per elaborare i risultati della query (ad esempio XSLT direttamente in XHTML).

Anche i reattori di risposta sono configurati nel solrconfig.xml , normalmente si abilitano quelli che ti interessano ad esempio:

<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"/>

Il modo più efficace per usarli dipende dal tuo ambiente e da ciò che desideri ottenere. Ovviamente se sei in PHP, un php può darti migliori risultati (facile accesso attraverso la lingua) e più veloce (meccanismo di serializzazione integrato, meno verboso). Se in Javascript, JSON potrebbe essere solo la strada da percorrere, ecc.

Vedete, SOLR è una piattaforma potente e versatile :) Se volete capire come attraversare la giungla, potreste voler ricorrere ad alcuni libri, come "Solr 1.4 Enterprise Search Server" (anche se non sono sicuro che faccia davvero il meglio possibile lavoro come introduzione). Molte cose che puoi capire meglio per tentativi ed errori così come per la pazienza e qualche aiuto online.

Spero che questo ti aiuti a farti andare.

Innanzitutto, molte parti del wiki di solr non sono molto utili per qualcuno che ha appena imparato come indicizzare e cercare i campi. Sembra che sia stato scritto per esperti! Usa termini che sono RELATIVI a solr, quindi è molto difficile capirlo senza leggerlo più volte.

NOTA : dispongo di un sito Web di annunci in cui vengono sempre visualizzati per primi gli annunci più recenti, quindi l'ordinamento non è pertinente per me, tranne che per l'ordinamento sul prezzo e la data non sono disponibili altre opzioni per gli utenti e anche quanti risultati per pagina.

Conosco una requestHandler è un modo per "fare qualcosa per la query" giusto? Ma come sapere quale gestore usare è difficile per me. E come configurarne uno anche. Tutto quello che so è che il gestore è specificato nella stringa di query come " qt=my_handler ".

Inoltre, le stesse domande si applicano ai responseWriters , che usare? Come configurare?

Cos'altro dovrei sapere di questi handler?

Come è un buon ed efficace modo di usarli?

Dovrei davvero scrivere qualcosa su come ottenere il solr implementato in un sito Web PHP dopo aver imparato tutte queste cose.

Grazie per tutto il vostro aiuto!





database