[SPIP Zone] Indexer d'autres trucs avec Indexer

Hola, hola

Quelqu'un saurait où il faut regarder pour faire que Indexer accepte une table X (externe ou fourni par un plugin) ?

Merci

Le 01/07/2015 22:18, Luis Speciale a écrit :

Hola, hola

Quelqu'un saurait où il faut regarder pour faire que Indexer accepte une
table X (externe ou fourni par un plugin) ?

On peut lui donner à manger n'importe quoi. Il faut que tu t'insères dans le pipeline "indexer_sources" et que tu ajoutes une instance de classe pour ton besoin (il faut donc que tu crées la classe correspondante à ce que tu veux indexer, sur le modèle ce celle pour les articles).

function patates_indexer_sources($sources){
	include_spip('Sources/Patates');

	// On ajoute nos patates
	$sources->register('patates', new Spip\Indexer\Sources\Patates());
	
	return $sources;
}

Et il faut alors une classe Patates qui implémente getDocuments() et getBounds() (voir celle pour les articles).

namespace Spip\Indexer\Sources;
use \Indexer\Sources\Document;

class Patates extends SpipDocuments {
	public function getDocuments{ … }
	public function getBounds{ … }
}

--
RastaPopoulos

Ciao

Il y a le plugin indexer document qui permet de montrer comment faire.
La documentation est sur contrib en cours de rédaction encore.

http://contrib.spip.net/ecrire/?exec=article&id_article=4656
mais plutot voir le svn :
http://zone.spip.org/trac/spip-zone/browser/plugins/indexer-documents?rev=87856

Km

Merci Don Rasta et Don Km, je vais voir ça today, je sens que je ne suis pas couché

A +

Le 02/07/2015 09:45, RastaPopoulos a écrit :

Le 01/07/2015 22:18, Luis Speciale a écrit :

Hola, hola

Quelqu'un saurait où il faut regarder pour faire que Indexer accepte une
table X (externe ou fourni par un plugin) ?

On peut lui donner à manger n'importe quoi. Il faut que tu t'insères
dans le pipeline "indexer_sources" et que tu ajoutes une instance de
classe pour ton besoin (il faut donc que tu crées la classe
correspondante à ce que tu veux indexer, sur le modèle ce celle pour les
articles).

function patates_indexer_sources($sources){
     include_spip('Sources/Patates');

     // On ajoute nos patates
     $sources->register('patates', new Spip\Indexer\Sources\Patates());

     return $sources;
}

Et il faut alors une classe Patates qui implémente getDocuments() et
getBounds() (voir celle pour les articles).

namespace Spip\Indexer\Sources;
use \Indexer\Sources\Document;

class Patates extends SpipDocuments {
     public function getDocuments{ … }
     public function getBounds{ … }
}

Ciao

Je complete on a publié 2/3 articles sur indexer en général. C'est
surement incomplet et donc ne pas hésiter à faire des retours si c'est
incompréhensible :slight_smile:

Km

Le 02/07/2015 10:53, cam.lafit@azerttyu.net a écrit :

Ciao

Je complete on a publié 2/3 articles sur indexer en général. C'est
surement incomplet et donc ne pas hésiter à faire des retours si c'est
incompréhensible :slight_smile:

Km
----
spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone

T'inquiète, je ne suis pas du genre hésitant ‡]
Je suis en train d'y mettre mon pif, là, si je ne pige pas je reviens

J'ai trouvé deux pétouilles dans Indexer Documents, et j'ai comité

Ensuite… J'avais déjà installé Indexer et je n'ai qu'un sphinx.conf dans /usr/local/etc/sphinx.conf (Mac)

searchd
searchd --stop
marchent en ligne de commande

Je voulais qu'il oublie le premier site SPIP (avec Indexer installé et fonctionnant en local), pour se limiter au nouveau site.
Mais je ne suis pas sûr d'en avoir arrivé proprement.
J'ai changé path et là ça marche (spip_adherents étant le nom d'une table correspondant à un objet dans le nouveau site), et je vois quil a créee

spip_adherents.kill
spip_adherents.lock
spip_adherents.meta
spip_adherents.ram

dans /usr/local/var/data
Dans /usr/local/etc/sphinx.conf j'ai ça

index spip {
  type = rt
  # path il est gentil comme tout
  path = /usr/local/var/data/spip_adherents
# bla
}
source src1
{
  # Toute cette partie est ROYALEMENT ignorée.
  # J'arrive à circonscrire la recherche avec path (plus haut)
  type = mysql
  sql_host = localhost
  sql_user = speciale
  sql_pass = ilsenfoutroyalement
  sql_db = bdd_fonda
  sql_port = 3306
# bla
}

Comment faire (correctement) pour que Sphinx cherche là où on lui dit de chercher et pas partout ?

Maintenant je vais mettre ça

function patates_indexer_sources($sources){
      include_spip('Sources/Patates');
      $sources->register('patates', new Spip\Indexer\Sources\Patates());
      return $sources;
}

dans indexer_pipelines.php et je vais créer Indexer/Sources/Patates.php et y mettre

namespace Spip\Indexer\Sources;
use \Indexer\Sources\Document;
class Patates extends SpipDocuments {
      public function getDocuments{ sauce }
      public function getBounds{ sauce }
}

C'est ça ?