2011-01-10 4 views
4

J'ai lu la documentation de Sphinx et diverses ressources, mais je suis confus au sujet du processus de maintenance des index principaux et delta. S'il vous plaît laissez-moi savoir si cela est correct:Comment mettre à jour les index principaux et delta Sphinx

  • ont une table qui partitionne l'index de recherche par last_update_time (PAS id comme dans le tutoriel http://sphinxsearch.com/docs/1.10/delta-updates.html)

  • Mise à jour l'index delta toutes les 15 minutes. L'indice delta saisit uniquement les enregistrements qui ont été mis à jour>last_update_time:

    indexer --rotate --config /opt/sphinx/etc/sphinx.conf delta 
    
  • Mise à jour l'index principal toutes les heures en delta fusion en utilisant:

    indexer --merge main delta --merge-dst-range deleted 0 0 --rotate 
    

Le SQL pré requête mettra à jour last_update_time à NOW(), qui repartitionne les index

Confusion: la fusion exécutera-t-elle le SQL de pré-interrogation?

  • Une fois l'index principal est mis à jour, mise à jour immédiatement l'index delta pour le nettoyer:

    indexer --rotate --config /opt/sphinx/etc/sphinx.conf delta 
    

EDIT: Comment la suppression des dossiers fonctionne même? Étant donné que l'index delta contiendrait des enregistrements supprimés, les enregistrements ne seraient supprimés des requêtes de recherche qu'après la fusion de l'index delta en principal.

Répondre

2

Pour traiter les suppressions dont vous avez besoin de jeter un oeil à la killlist, il définit essentiellement les critères de suppression:

http://sphinxsearch.com/docs/manual-1.10.html#conf-sql-query-killlist

Dans un exemple je nous construisons notre principal quotidien, tôt le matin, puis il suffit de lancer une mise à jour delta (incluant la killlist) toutes les 5 minutes.

Sur les choses de fusion, je ne suis pas sûr que je ne l'ai jamais utilisé.

+0

Est-il possible de supprimer des documents en temps réel dans Sphinx? Ou devez-vous toujours attendre que l'index delta soit reconstruit? Un cas d'utilisation courant est qu'un utilisateur veut supprimer quelque chose qu'il a posté. – Simian

+0

Dans sphinx 1.10-beta il y a l'idée d'index en temps réel qui peuvent avoir des instructions de type sql (update/delete/insert) effectuées contre eux. Si vous utilisez un index standard, je ne le pense pas. – Ian

Questions connexes