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.
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
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