2009-12-14 7 views
0

Quelqu'un peut-il m'aider à comprendre le format de données attendu pour la création d'attributs MVA (valeurs multiples) dans Sphinx?Attributs MVA dans Sphinx

J'ai une fonction MySQL qui renvoie une rangée d'entiers séparés par des virgules, assemblés avec GROUP_CONCAT, sous forme de blob. J'ai deux autres attributs MVA qui associent les résultats d'une instruction JOIN , avec GROUP_CONCAT, comme un blob (tel que généré par ThinkingSphinx). Ceux-ci sont tous inclus dans mon sql_query dans mon sphinx.conf.

J'ai essayé de courir le SQL sur un petit jeu de résultats dans la console, et il fonctionne: pour tous les colonnes MVA, les résultats sont un blob contenant des données telles que:

2432,35345,342347,8975,453645 

etc. Les deux attributs MVA générés avec l'index de combinaison JOIN/GROUP_CONCAT correctement. Toutefois, l'attribut MVA généré avec la fonction MySQL provoque l'échec de l'indexation (il semble que peu ou pas de données sont indexées). Ceci malgré le fait que la requête fonctionne parfaitement dans la console.

Le format de données semble donc identique, mais Sphinx rejette l'une des colonnes. Est-ce que quelqu'un connaît des pièges avec des attributs MVA qui pourraient m'aider à déboguer cela?

Répondre

0

J'ai finalement résolu ce problème. Cela se produisait à cause de quelque chose qui semblait sans rapport: un attribut 'sql_attr_str2ordinal' qui semblait affecté (ou effet) la requête SQL/indexation d'une manière que je ne comprends pas complètement.

Voir: http://www.sphx.org/forum/view.html?id=2867

Heureusement, dans mon cas, j'ai pu l'enlever entièrement, et l'indexation semble maintenant travailler.

1

Je n'ai jamais utilisé think-sphinx (étant une boutique PHP ici), mais je ne pense pas que vous devriez vous concentrer sur vos résultats. D'un exemple de travail dans un de mes fichiers sphinx.conf:

sql_attr_multi = uint categories from query; SELECT entry_id, cat_id FROM exp_category_posts 
+0

Merci. Cependant, la méthode GROUP_CONCAT semble être la bonne façon de le faire lors de l'indexation des attributs MVA en utilisant la méthode 'field'. Votre exemple indexe à partir de 'query', où vous avez raison: GROUP_CONCAT ne serait pas correct. –

Questions connexes