# [Mysql] Gentoo, installer sphinxSE pour mysql (résolu)

## yobogs

Bonjour,

Je dois installer SphinxSE, un "MySQL storage engine " (je n'arrive pas à le traduire dsl  :Wink: ).

Dans l'installation on me demande de copier des source de sphinx vers mon repertoire mysql-5.0.44/sql/ (mysql-5.0.44 étant la version de mon mysql).

Ensuite on me demande de lancer 

./configure --with-sphinx-storage-engine

make

make install

J'ai donc deux problème sur lesquel je bloc depuis deux jours...

Sous Gentoo, ne passant pas par les tarball, je ne sais pas où coller mes source vers sql et comment lancer l'équivalent de ./configure, make et make install avec emerge.

Qq'un aurait il une idée pour ceci ?

D'avance merci pour votre aide

-----------------------------------

Edit :

Pourquoi j'ai choisi Sphinx ?

Comme je l'ai expliqué en MP à boozo, je travail actuellement sur un moteur de recherche (peu importe le domaine) donc la base mysql contient 125 millions de lignes.

J'ai commencé par coder mon propre moteur de recherche, mais les résultats devenaient très vite long et la charge du serveur montait tres vite également.

J'ai donc tester MngoSearch et sphinx (lucène me paraissait trop complèxe).

J'ai très vite été séduit par la rapidité de sphinx...

La création de l'index mettait environ 45min sur un Intel  Core2Duo E6550 avec 4Go de RAM et pour ce qui est de la recherche, sur une requete me retournant 6-7 millions de resultat j'arrivais à delai de - d'une seconde.

MngoSearch était plus lent sur la même requete 2 à 4 seconde.

Le seul soucis de sphinx normal est qu'il faut regenerer l'index de temps à autre d'où mon envie de test SphinxSE pour mysql.

Plus besoin de generer d'index... par contre je ne connais pas encore les temps de réponse.

Une solution comme sphinxSE me permettrai de mettre mysql en cluster par la suite.

Je vous tiens au courant de la comparaison entre sphinx et sphinSE.

Merci encore à boozo pour son aideLast edited by yobogs on Sun May 25, 2008 9:52 pm; edited 2 times in total

----------

## boozo

'alute

et bienvenue sur le forum FR   :Smile: 

je n'utilise pas mais je dirais à froid :

```
$eix sphinx

(snip)

* app-misc/sphinx

     Available versions:  ~*0.9.7!m ~*0.9.8_rc1!m ~*0.9.8_rc1-r1!m ~*0.9.8_rc2!m ~*0.9.8_rc2-r1!m {debug mysql postgres stemmer}

     Homepage:            http://www.sphinxsearch.com/

     Description:         Full-text search engine with support for MySQL and PostgreSQL

* dev-db/sphinx [1]

     Available versions:  ~*0.9.7_rc2 {debug mysql postgres}

     Homepage:            http://www.sphinxsearch.com/

     Description:         Full-text search engine with support for MySQL and PostgreSQL

```

nb. le [1] correspond au sunrise

Donc pour toi je dirais : démasque la version de app-misc/sphinx et colle lui le useflag mysql nan ?   :Wink: 

----------

## yobogs

Salut,

Merci bcp pour ta réponse...

L'idée est tres bonne, je vais tester de ce pas  :Smile: 

Bonne soirée à toi

----------

## boozo

mais de rien   :Wink: 

ps: fait toujours plaisir de voir qu'on est plus rapide que les autres forums qd m^ (gnark,gnark,gnark,)

btw : en plus de la maj du post quand tout sera ok, et si tu as le temps/envie bien entendu, donne nous un bref retour...(like this) pourra toujours être utile d'avoir un avis frais   :Smile: 

----------

## yobogs

re  :Wink: 

L'installation de sphinx s'est bien passé, mais là où je bloque c'est pour recompiler mysql avec le flag --with-sphinx-storage-engine et copier des fichiers dans le repertoire sql des sources mysql (comme necessaire et specifier pour sphinx)

Voici ce que je dois faire pour cette instalation :

- installer sphinx avec le flag --with-mysql

et ensuite specifier ds la doc de sphinx :

cp /home/data/sphinx-0.9.8-rc2/mysqlse/sphinx.5.0.37.diff /home/data/mysql-5.0.40

- patch -p1 < sphinx.5.0.37.diff

- sh BUILD/autorun.sh

- cp -R /home/data/sphinx-0.9.8-rc2/mysqlse/ /home/data/mysql-5.0.24/sql/sphinx

- ./configure --with-sphinx-storage-engine

- make

- make install

As tu une idée comment me sortir de ça ?

D'avance Merci

----------

## kwenspc

euh... utilises emerge! pourquoi tu t'ennuies à le compiler à la mano? on est pas sous slackware que diable!  :Laughing: 

----------

## yobogs

Je veux bien mais je cherche juste ou copier mes fichier dont j'ai besoin dans les source mysql ...

Je reexplique : 

L'installation de sphinx necessite imperativement de coller des fichiers dans les sources de myql avant de reeinstaller mysql avec le flag --with-sphinx-storage-engine...

D'où mon pb, Je ne sais pas où coller mes fichiers dans les source mysql

----------

## boozo

comme te l'a dis kwen... oublie la mode slack : portage et les devs qui ont fait les ebuilds gèrent çà pour toi   :Wink: 

On y retourne :

 *Quote:*   

> $eix mysql
> 
> (snip)
> 
>  [I] dev-db/mysql
> ...

 

Regarde le useflag en rouge.... parlant non ? (fait un $euse -i extraengine si tu veux vérifier)

donc tu le rajoute à mysql dans ton package.use comme tu l'as fait précédement pour sphinx puis tu recompile mysql en -1N

Reste que... il faut peut-être installer sphinx ensuite... ce que je crainds mais pas grave, si c'est bien le cas, tu renvois un oneshot sur sphinx et zou !  :Wink: 

Tout ceci n'est-il pas en elog de sphinx au fait ?

----------

## yobogs

Ok, bien compris ...

Merci bcp pour la réponse.

Dsl d'avoir insisté, j'ai encore des ptits pb avec les ebuilds  :Wink: 

----------

## yobogs

Bonjour a tous,

Je reviens avec mon cher probleme  :Wink: 

J'ai bien upgrade la version de mysql et ajoute le flag extraengine, tt s'est bien passe.

Par contre lorsque je fais un show engines; dans l'invite de commande mysql, pas de trace de mon SPHINX / Sphinx storage engine

J'ai bien installé mon sphinx avec with-mysql mais rien :-/

Ce qui est specifié dans la doc sphinx, c'est la chose suivante :

   1. copy sphinx.5.0.yy.diff patch file into MySQL sources directory and run

      patch -p1 < sphinx.5.0.yy.diff

   2. in MySQL sources directory, run

      sh BUILD/autorun.sh

   3. in MySQL sources directory, create sql/sphinx directory in and copy all files in mysqlse directory from Sphinx sources there. Example:

      cp -R /root/builds/sphinx-0.9.7/mysqlse /root/builds/mysql-5.0.54/sql/sphinx

   4. configure MySQL and enable Sphinx engine:

      ./configure --with-sphinx-storage-engine

   5. build and install MySQL:

      make

      make install

J'ai pensé a faire telecharger une source deja prete au moment ou emerge mysql telecharge les sources, mais je ne sais pas si c'est faisable

Qq'un aurait un piste pour m'aider plz ? (je vais qd meme pas passer a redhat juste pour ca lol)

D'avance Merci

----------

## xaviermiller

est-ce que l'endroit où l'installation se fait est dans ton PATH ?

pas d'ebuild ?

----------

## boozo

ha... bon... alors doit y avoir un pb avec l'ebuild de sphinx sinon à quoi sert le useflag mysql   :Confused:  voire le extraengine de mysql - Faudra peut-être faire un bugreport au mainteneur de sphinx (caleb je crois)

Sinon oui, tu peux faire une conf manuelle spécifique avec la cmdline ebuild (dépackager les sources, appliquer ton patch, recompiler ainsi et l'installer) mais j'aime moyen qd m^. Mysql n'est pas un p'tit soft. Le faire tourner en prod avec un truc fait comme çà avec un produit qui n'est pas passé par les mains des devs de chez nous ne me plait guère   :Confused: 

C'est pour un usage professionnel ? c'est sans vouloir être indiscrêt mais c'est pour mieux comprendre : tu peux en dire un peu plus les tenants et les aboutissants de ton besoin ?

Pour revenir à l'option "compil semi-manuelle" : j'ai regardé vite fait le patch hier soir mais c'est pour une version 5.0.37 de mysql... rien ne garantie : 1) que ton patch va passer sur ta version des sources ; 2) que la compilation va aller au bout... et puis j'ai peut-être mal compris hier mais sphinx et sphinxSE !? toi tu parles de sphinxSE et non pas de sphinx d'après la doc que tu cites ; j'ai lu en travers mais l'un n'étant qu'une composante annexe de l'autre non ? or j'ai l'impression que c'est juste sphinxSE qui ne marche pas... et non pas sphinx. Tu peux m'éclaircir un chouilla stp   :Wink: 

Je veux bien jeter un oeil et faire un essai d'install ce soir (tard) si tu veux mais sans guarantie quant au résultat

----------

## yobogs

Euh ...

Pour l'ebuild de sphinx, y'en a bien un, mais il ne fait que installer sphinx sans l'option sphinxe pour mysql...

Pour completer l'installation il faut fait la manip en recompilant mysql avec sphinx-storage-engine.

D'où mon pb

Pour le path, je verifie ça comment ?

Merci pour l'aide

----------

## boozo

'alute

dsl pour le retard de réponse, j'ai refait un essai mais sans succès au final... on peut patcher et passer la compilation mais l'engine ne semble pas pris en compte car je ne le vois pas dans la liste ou il devrait-être   :Confused:  ou alors j'ai raté qqch...

Si tu veux aller plus loin : 

```
ebuild <path_to_ebuild_sphinx> compile    /* là, tu as juste ton sphinx compilé dans la sandbox avec ton --with-mysql si tu as bien fait les choses avec le package.use */

ebuild <path_to_ebuild_mysql-version-que-tu-veux> unpack

cp <path_to_sandbox_sphinx>/mysql-5.0.37.diff <path_to_sandbox_mysql>

cp -R <path_to_sandbox_sphinx>/sphinxse <path_to_sandbox_mysql>/sql/sphinx

cd <path_to_sandbox_mysql> ; patch -p1 < mysql-5.0.37.diff

/* Là, le pb c'est qu'il faut modifier l'eclass mysql pour qu'emerge prendre en compte la modif... ce qui ne me plait que très moyennement  :S  Enfin bref : edite /usr/portage/eclass/mysql.eclass et rajoutes lui myconf="${myconf} --with-sphinx-storage-engine" */

ebuild <path_to_sandbox_mysql> compile && ebuild <path_to_sandbox_mysql> install
```

Tout y est mais je ne vois pas le moteur dans mysql   :Confused:  mais à lire certains posts ici où là... me semble pas super super porté ta bestiole

Je m'y recollerais un peu plus tard et investiguer plus en profondeur... y'a un truc qui m'échappe... mais il serait intéressant que tu contacte les mainteneurs des packages sur la ML pour leur demander des précisions sur sphinxse voire les aider à mieux le supporter dans mysql   :Wink: 

Edit:

BTW : Je suis un peu navré d'avoir à dire çà mais j'aurais apprécié un peu plus d'informations/implication que : "Euh..." et me ré-expliquer pour la 3ème fois "les specs disent que"   :Rolling Eyes: 

Vu tes autres post sur différents forums... j'ai légèrement l'impression d'avoir un presta (voire un stagiaire) qui veux rapidement la solution toute faite pour dire au client/MdS "c'est réglé" ou "on a testé et on prend l'autre scénar"   :Sad: 

----------

## yobogs

Salut,

Merci bcp pour ta réponse...

Je suis également en train de chercher et j'ai contacté les créateurs de sphinx pour essayer d'arriver à une solution pour arriver à l'installer correctement et simplement sur Gentoo. 

Pour l'instant je suis sans réponse de leur part, mais je ne désespère pas.

Pour répondre à ton Edit je vais être franc ...

J'utilise cette solution pour un projet perso. J'ai déjà testé sphinx sans sphinxSE, ça marche super et je pourrais m'en contenter, mais comme je suis un tétu de nature, je veux réussir cette installation, même si je me rends compte au final que c'est plus lent. Au moins j'aurais la conscience tranquille.

Ce que je dois faire en plus de comprendre sphinx et de réussir l'installation, c'est comprendre le système des ebuilds, use etc ... sur Gentoo. J'ai toujours été sur RedHat et je compilais toujours  moi même mysql à partir des sources etc ... La simplicité de gentoo est deconcertante, mais parfois j'ai du mal à saisir certains trucs, sphinx par exemple.

D'où ton impression d'avoir à faire à un stagiaire ou un presta  :Smile: 

En tout cas merci d'avoir pris le temps de m'aider, je vais essayer d'avance sur cette piste

----------

## boozo

Ha ben, ça fait plaisir de te lire... me sens moins seul ^^ 

Je ne sais pas si les devs de sphinx vont trop s'impliquer dedant mais sait-on jamais ; en revanche tu devrais vraiment faire un tour chez nous sur le chan irc #gentoo-db. Je pense que d'autes ont dû se pencher sur la question s'ils utilisent sphinx... je pense à caleb notamment qui est mainteneur de sphinx dans portage.

Pour faire bien (et utile pour la communauté), il faudrai modifier l'ebuild de mysql pour faire en sorte que le "extraengine" prennent en compte ce moteur-là en plus de ceux déjà présent... d'ailleurs il est probable que d'autres devs se soient penchés sur la question d'où l'intérêt de prendre contact avec eux   :Wink: 

Si ce n'est pas le cas, j'aimerais déjà le voir tourner en userland avant de se lancer dans le portage sur gentoo... je n'ai pas encore essayé de mon côté mais déjà, arrives-tu à le faire fonctionner sur gentoo en install form scratch - classiquement - ?

Est-ce que tu le vois pris en compte ? Si oui, fonctionne-t-il correctement ?

Ensuite on pourra faire un test pour faire un ebuild convenable mais j'aimerais être sûr qu'il n'y a pas de pb de ce côté-là avant...

PS: Histoire de gratouiller la curiosité intrinsèque d'un gentooiste comme il se doit : c'est quoi donc que c'est ce projet ?

PS 2 : sous redhat on installe mysql from sources sans rpm maintenant ?!  OO 

----------

## yobogs

Salut,

Desolé de te repondre aussi tard  :Smile: 

Pour redhat il fu un temps où je ne passais pas par les rpm mais peu importe.

Pour sphinx, j'ai contacté le type qui est enregistré pour le ebuild de sphinx mais il ne semble pas vouloir s'attaquer au problème de sphinxSE.

Je vais a présent me retourner vers les dev du ebuild mysql pour le poser la question.

Je te tiens au courant de la suite  :Smile: 

PS : pour le projet, je t'en parle en mp 

----------

## boozo

 *Quote:*   

> Prérequis : Installer sphinx en activant le useflag mysql dans le package.use et activer le useflag extraengine de mysql dans le package.use
> 
> En sus pour ensuite : penser à configurer sphinx (/etc/sphinx.conf)
> 
> ```
> ...

 

Tu démarres mysql ensuite et tu verras : 

 *Quote:*   

> mysql> show engines;
> 
> +------------+---------+----------------------------------------------------------------+
> 
> | Engine     | Support | Comment                                                        |
> ...

 

Bon ça roule ! ^^   Y'avais un truc qui ne me plaisais pas hier... et pour cause je loupais les vérifications de base... la fatigue !

Là j'ai faim ! J'édite mes posts pour plus d'infos toute à l'heure

Edit : Voilà, je t'ai remis la procédure. SphinxSE Gentoo ready. La suite c'est faire passer çà dans le mysql.eclass et revoir les ebuilds mysql|sphinx pour ne plus avoir à patcher à la main comme un sagouin ! Mais là, c'est une longue histoire qui se fera sur b.g.o. dès que tu te sens prêt  :Laughing: 

Reste que je ne sais pas si le client sphinx fonctionne correctement (cf. liens donnés plus haut) et encore moins en terme de bench vis-à-vus des autres moteurs.

C'est à toi de jouer maintenant   :Smile: 

ps: J'ai eu ton pm et je ne suis vraiment pas compétent en la matière pour t'aider dsl mais il est très possible que ton projet puisse intéresser d'autres devs ici même si c'est pour décliner l'usage de sphinx sur d'autres problématiques alors je pense que tu peux rajouter 1 ligne ou 2 dans ton premier post pour expliquer dans les grandes lignes - le liens sera pour juger plus plus tard quant çà tournera si tu veux -  et si tu peux nous donner les raisons qui t'on poussé à essayer sphinx ce n'en sera que plus intéressant . Bref, tiens nous au courant dans ce thread ; ça pourra peut-être servir de base de travail à d'autres    :Wink: 

ps 2: Pense à éditer ton titre genre : [Sphinx] Intallation SphinxSE dans mysql (Résolu)

merci !

----------

## yobogs

J'hallucine, t'es un acharné lol...

J'veux bien les infos pour retester sur un serveur.

En attendant d'avoir simplement une solution, je continue de chercher, au moins pour ma culture  :Smile: 

A tt

----------

## yobogs

Salut,

Vraiment un grand grand merci pour ton aide ...

Je vais tester sur mon serveur tt à l'heure.

En ce qui concerne mon projet et les raisons qui m'ont poussé à utiliser sphinx, je prépare un post ds la journée... c'est vrai que ça peut servir à d'autre  :Smile: 

Encore Merci pour cette aide

----------

