2008-11-17 6 views
4

Je mise sous tension d'une recherche sur le Web en utilisant Sphinx, et reçois le message d'erreur suivant lors de la construction des indices:Configurer merge_block_size dans le moteur de recherche sphynx

AVERTISSEMENT: sort_hits: merge_block_size = 76 kb trop bas, mem_limit augmentation peut améliorer les performances

Le problème est que je ne trouve aucune documentation sur l'emplacement de ce paramètre. Je connais un peu la configuration de Sphinx, donc j'ai juste besoin de savoir où le réglage est configuré.

Répondre

4

Cela se produit probablement parce que vous essayez d'indexer trop d'éléments à la fois. Assurez-vous que vous utilisez ranged queries. Si vous utilisez déjà des requêtes à distance, augmenter le mem_limit, comme il le suggère, peut aider. Le merge_block_size est basé sur mem_limit et le nombre de documents.

Si vous êtes curieux de savoir comment il génère ce nombre, consultez la source. C'est librement disponible.

2

En sphinx.conf:

sql_query_range = SELECT MIN(id),MAX(id) FROM documents 
sql_range_step = 1000 
sql_query = SELECT * FROM documents WHERE id>=$start AND id<=$end 

Si la table contient le document ID de 1 à, disons, 2345, puis sql_query serait exécuté trois fois:

  1. avec $ start remplacé par 1 et $ fin remplacé par 1000;
  2. avec $ start remplacé par 1001 et $ end remplacé par 2000;
  3. avec $ commencer remplacé par 2000 et à la fin $ remplacé par 2345.

De toute évidence, ce n'est pas une grande différence pour la table 2000 rangée, mais en ce qui concerne l'indexation de 10 millions de rangs table MyISAM , les requêtes à distance pourraient être utiles.

http://sphinxsearch.com/docs/current.html#ranged-queries

espérons que cela fonctionne pour vous.

Questions connexes