2012-02-21 4 views
1

manuel Sphinx says que la fusion d'index devrait conserver les anciens mots-clés ainsi que des nouvelles:Sphinx: que fait exactement indexer --merge?

Notez, cependant, que les mots clés « anciens » ne seront pas supprimés automatiquement dans de tels cas. Par exemple, s'il y a un mot-clé "ancien" associé au document 123 dans DSTINDEX, et un mot-clé "nouveau" associé dans SRCINDEX, le document 123 sera trouvé par les deux mots-clés après la fusion.

Je ne peux pas reproduire cela.

  1. Nous avons un document avec id 1 et le texte 'un' dans l'index main
  2. texte dans les changements de table DB de 'un' à 'deux'
  3. indexer --rotate delta
  4. indexer --rotate --merge main delta
  5. Wait pour searchd pour recharger l'index
  6. Maintenant, nous pouvons trouver document 1 par SELECT id FROM main WHERE match('two'), mais match('one') ne trouve rien.

Sources pour les deux indices sont définis essentiellement comme:

sql_query = SELECT id, text FROM tbl 

J'ai aussi essayé de spécifier des mots clés via sql_joined_field et fusion ne garde pas vieux mots-clés de trop.

Cela signifie-t-il que le manuel est erroné? Est-il prudent de supposer que si SRCINDEX a des informations pour un ID (attributs et mots-clés de texte), le processus de fusion va rejeter tout ce que DSTINDEX avait pour cet ID et le remplacer par de nouvelles informations?

Répondre

2

J'ai demandé à Andrey Aksenoff (créateur de Sphinx) à ce sujet. Il a dit que maintenant ils nettoient l'identifiant dupliqué en fusionnant si index docinfo est extern.

Alors oui, c'est un bug dans la documentation.

+0

Super! C'est exactement ce que j'espérais. Merci beaucoup! –

0

Si Sphinx trouve des ID en double lorsqu'ils sont éliminés des résultats de recherche, Sphinx renvoie uniquement des ID uniques. C'est pourquoi vous ne les avez pas vus dans les résultats de recherche.

+0

Que voulez-vous dire, les ID en double où? En fusionnant? Donc le manuel est faux? –

+0

Vous avez indiqué que vous avez l'ID 1 dans les deux index principal et delta, donc après la fusion de delta en main, vous aurez l'ID dupliqué 1 dans l'index principal. Mais, lorsque vous effectuez l'ID de recherche en double éliminé par Sphinx, vous ne voyez qu'un résultat trouvé pour l'ID 1. Manuel n'est pas faux. :) –

+0

Il semble que nous parlons de choses différentes ici. Bien sûr, je ne m'attendrais pas à ce que le même identifiant soit retourné deux fois. Le problème est que je ne vois aucun résultat lorsque je recherche l'ancien mot-clé. –