Solr ile ilgili ideal yolu PHP sonuçlanır?

1 Cevap php

Firslty, ben bu bir doğrultuda bazı benzer soruların farkında değilim, ama bu durum kendi soruyu gerektirecek kadar farklı olduğunu düşünüyorum.

Ben bir lamba sunucuya yüklemek bir iskelesi aracılığıyla, bir Solr endeksi koşuyorum. Şu anda arama sonuçlarında getirmek için simplexml_load_file işlevini kullanın ve sonra onları fonksiyonları birkaç çukur ayrıştırmak. Ben temel bir sorun haline çalıştırıyorum başlayana kadar bu süreç ile mutlu oldu.

Alan adları SimpleXML işlevi geçti alamadım. Örneğin, bu sonuç;

<doc>
  <float name="score">0.73325396</float>
  <str name="add1">Ravensbridge Drive</str>
  <str name="comments">0</str>
  <str name="company">Stratstone Lotus Leicester</str>
  <str name="feed_id"/>
  <str name="id">1711765</str>
  <str name="pcode">LE4 0BX</str>
  <str name="psearch">LE4</str>
  <str name="rating">0</str>
</doc>

SimpleXML nesne gibi görünecektir;

 [doc] => Array
 (
   [0] => SimpleXMLElement Object
   (
     [float] => 0.73325396
     [str] => Array
     (
       [0] => Ravensbridge Drive
       [1] => 0
       [2] => Stratstone Lotus Leicester
       [3] => SimpleXMLElement Object
       (
         [@attributes] => Array
         (
           [name] => feed_id
         )
       )
       [4] => 1711765
       [5] => LE4 0BX
       [6] => LE4
       [7] => 0
     )
   )

Tam bir veri kümesi bulunduğunda, dizide depolanan verilerin 11 bit var, ama bazı eksik olduğunda, veri etrafında hareket eder ve benim ayrıştırıcı ayrılmak geliyor.

Yani, düzgün yapmak için kütüphaneler / sınıflarında baktım. Yani, iki ana olanları; Onlar birkaç kullandığınız farklı Solr çekirdekleri, destek gibi Apache Solr ve solr-php-client ancak her ikisi de gerçek gerçek dünya örnekleri çok az miktarda, üzerinde karmaşık görünüyor ve ne bakmak.

Nedir kullanmak için en iyi şey? Oldukça şimdi burada saplanıp ettik, herhangi bir yardım MASSIVELY mutluluk duyacağız.

Teşekkürler!

1 Cevap

Kesinlikle, mevcut müşterilerinden birini kullanın. Çoklu çekirdek desteği gelince, Solr her örneği için istemci bir örneğini oluşturmak kadar basit.

Solr uzantısı çok daha güçlü, kullanımı hala oldukça sezgisel varken. Burada temel bir sorgu yapmak ve sırt hem de kütüphaneleri kullanarak sonuç almak örnek kod parçacıkları bir çift vardır:

PHP Solr extension

<?php
$options = array
(
    'hostname' => 'localhost',
    'port'     => '8080',
    'path'     => '/solr'
);

$client = new SolrClient($options);

$query = new SolrQuery();
$query->setQuery('fox');
$query->setStart(0);
$query->setRows(50);
// specify which fields do we want to retrieve
$query->addField('id')->addField('title_t')->addField('source_t');

$res = $client->query($query)->getResponse();

// how does he response look like?
var_dump($res);
/*
object(SolrObject)[4]
  public 'responseHeader' => 
    object(SolrObject)[5]
      public 'status' => int 0
      public 'QTime' => int 0
      public 'params' => 
        object(SolrObject)[6]
          public 'fl' => string 'id,title_t,source_t' (length=19)
          public 'indent' => string 'on' (length=2)
          public 'start' => string '0' (length=1)
          public 'q' => string 'fox' (length=3)
          public 'wt' => string 'xml' (length=3)
          public 'rows' => string '50' (length=2)
          public 'version' => string '2.2' (length=3)
  public 'response' => 
    object(SolrObject)[7]
      public 'numFound' => int 39
      public 'start' => int 0
      public 'docs' => 
        array
          0 => 
            object(SolrObject)[8]
              ...
          1 => 
            object(SolrObject)[9]
              ...
          2 => 
            object(SolrObject)[10]
              ...
          (...)
*/
// how does a document look like?
var_dump($res->reponse->docs[0]);
/*
object(SolrObject)[8]
  public 'id' => int 11408
  public 'source_t' => string 'CBD News Headlines' (length=18)
  public 'title_t' => string 'Hunting across Southeast Asia weakens forests' survival' (length=55)
*/

solr-php-client (official example of use)

require_once 'library/SolrPhpClient/Apache/Solr/Service.php';

$solr = new Apache_Solr_Service('localhost', '8080', '/solr');

if (!$solr->ping()) {
    exit('Solr service not responding.');
}

$offset = 0;
$limit = 50;

$query = 'fox';
$res = $solr->search($query, $offset, $limit);

// how does he response look like?
var_dump($res->response);

/*
object(stdClass)[6]
  public 'numFound' => int 39
  public 'start' => int 0
  public 'docs' => 
    array
      0 => 
        object(Apache_Solr_Document)[46]
          protected '_documentBoost' => boolean false
          protected '_fields' => 
            array
              ...
          protected '_fieldBoosts' => 
            array
              ...
      1 => 
        object(Apache_Solr_Document)[47]
          protected '_documentBoost' => boolean false
          protected '_fields' => 
            array
              ...
          protected '_fieldBoosts' => 
            array
              ...
     (...)
*/

// how does a document look like?
var_dump($res->response->doc[0]);

/*
object(Apache_Solr_Document)[46]
  protected '_documentBoost' => boolean false
  protected '_fields' => 
    array
      'publicationTime_i' => int 1257724800
      'publicationDate_t' => string 'Mon, 9 Nov 2009' (length=15)
      'url_s' => string 'http://news.mongabay.com/2009/1108-hance_corlett.html' (length=53)
      'language_s' => string 'EN' (length=2)
      'title_t' => string 'Hunting across Southeast Asia weakens forests' survival' (length=55)
      'text' => string 'A large flying fox eats a fruit ingesting its seeds.' (length=52)
      'id' => int 11408
      'relevance_i' => int 27
      'source_t' => string 'CBD News Headlines' (length=18)
  protected '_fieldBoosts' => 
    array
      'publicationTime_i' => boolean false
      'publicationDate_t' => boolean false
      'url_s' => boolean false
      'language_s' => boolean false
      'title_t' => boolean false
      'text' => boolean false
      'id' => boolean false
      'relevance_i' => boolean false
      'source_t' => boolean false
*/