2012-07-09 6 views
1

J'ai un problème avec un index de recherche Sphinx. Je continue d'obtenir des ensembles de résultats vides.Sphinx Search Index

source mrc 
{ 
    type  = mysql 
    sql_host = localhost 
    sql_user = root 
    sql_pass = 
    sql_db = test_db 
    sql_port = 3306 
    mysql_connect_flags = 32 

    sql_query_pre = SET NAMES latin1 
    sql_query_pre = SET SESSION query_cache_type=OFF 
    sql_query_pre = REPLACE INTO sphinx.indexer (idx,server,version,lastrun_at) SELECT 'mrc','localhost','2.0.4',UNIX_TIMESTAMP(NOW()) FROM DUAL 
    sql_query_post = UPDATE sphinx.indexer SET fetched_by = UNIX_TIMESTAMP(NOW()) WHERE idx = 'mrc' AND server = 'localhost' AND version = '2.0.4' 
    sql_query_post_index = UPDATE sphinx.indexer SET indexed_by = UNIX_TIMESTAMP(NOW()) WHERE idx = 'mrc' AND server = 'localhost' AND version = '2.0.4' 

    sql_attr_uint = mrc_id 
    sql_attr_uint = mrc_parent 
    sql_attr_float = mrc_latitude 
    sql_attr_float = mrc_longitude 

    sql_query = \ 
     SELECT mrc_id AS doc_id, \ 
     mrc_id, \ 
     mrc_parent, \ 
     RADIANS(mrc_latitude) as mrc_latitude, \ 
     RADIANS(mrc_longitude) as mrc_longitude \ 
     FROM mrc_table \ 
     WHERE mrc_parent > 0 

    sql_query_info = SELECT * FROM mrc_table WHERE mrc_id = $id 

} 

index mrc 
{ 
    charset_type = sbcs 
    docinfo = extern 
    mlock = 1 
    morphology = none 
    source = mrc 
    path = /usr/local/var/data/mrc 
} 

indexeur me donne -

indexing index 'member_region_cities'... 
collected 78312 docs, 0.0 MB 
total 78312 docs, 0 bytes 
total 0.656 sec, 0 bytes/sec, 119354.57 docs/sec 

Si je connecté à searchd par MySQL et faire

SELECT * FROM mrc_table; 

Il retourne vide.

Theres certainement des données dans la table localhost, vous pouvez le voir où l'indexeur dit « recueilli 78312 »

Alors pourquoi Sphinx ne pas mettre les données dans searchd?

Salutations

Répondre

2

J'ai trouvé mon problème, je ne sélectionnais aucun champs. Toutes mes colonnes ont été configurées en tant qu'attributs.

Je fixe ce en laissant tomber cette ligne - sql_attr_uint = mrc_id

Pour référence ultérieure, si vous avez besoin d'un index sans champs que vous pouvez définir un champ factice par exemple add - 'a' comme dummy - à la requête select.

2

Veuillez vérifier votre question. Vous avez fourni la configuration pour l'index appelé mrc mais la sortie de l'indexeur lit member_region_cities mais je crois que c'est juste un nom raccourci.

  1. S'il vous plaît assurez-vous d'exécuter indexeur avec --rotate l'option si searchd est en cours d'exécution.

  2. Vous pouvez vérifier le numéro d'identification des documents en utilisant l'index

    ./indextool --dumpheader /usr/local/var/data/mrc.sph | grep Total documents

  3. S'il vous plaît assurez-vous que vous vous connectez au serveur Sphinx, pas MySQL, il est généralement en cours d'exécution sur le port 9306

    mysql -h 127.0.0.1 -P 9306

J'espère que cela aide

+0

Bonne capture, j'ai remplacé tous les member_region_cities dans l'index en tant que mrc juste avant de poster donc c'est la raison de la sortie de l'indexeur. Les sorties de l'outil d'index - total-documents: 78312, et merci pour ce conseil je ne savais pas sur l'indextool Et certainement se connecter au serveur correct. – Marklar

+0

Alors, SELECT * FROM mrc est toujours vide? – vfedorkov

+0

Quelle version de Sphinx utilisez-vous? – vfedorkov

Questions connexes