web-dev-qa-db-fra.com

Solr engage et optimise les questions

J'ai un site de petites annonces. Les utilisateurs peuvent mettre des annonces, modifier des annonces, afficher des annonces, etc.

Chaque fois qu'un utilisateur met une annonce, j'ajoute un document à Solr. Je ne sais cependant pas quand le commettre. Commit ralentit les choses par rapport à ce que j'ai lu.

Comment dois-je procéder? Autocommit toutes les 12 heures environ?

Aussi, comment dois-je le faire avec Optimiser?

65
user188962

En fait, engager souvent et optimiser rend les choses vraiment lentes. C'est trop lourd.

Après une journée de recherche et de lecture, j'ai découvert ceci:

1- Optimiser permet de doubler la taille de l'index tout en étant optimisé et rend les choses vraiment lentes.

2- S'engager après chaque ajout n'est PAS une bonne idée, il est préférable de s'engager quelques fois par jour, puis de faire une optimisation une fois par jour au maximum.

3- Commit doit être réglé sur "autoCommit" dans le fichier solrconfig.xml, et là, il doit être réglé en fonction de vos besoins.

37
user188962

Un peu plus de détails sur Commit/Optimize:

Valider: lorsque vous indexez des documents vers solr, aucune des modifications que vous apportez n'apparaîtra jusqu'à ce que vous exécutiez la commande commit. Le moment auquel exécuter la commande commit dépend donc vraiment de la vitesse à laquelle vous souhaitez que les modifications apparaissent sur votre site via le moteur de recherche. Cependant, c'est une opération lourde et doit donc être effectuée par lots, pas après chaque mise à jour.

Optimiser: Ceci est similaire à une commande de défragmentation sur un disque dur. Il réorganisera l'index en segments (augmentant la vitesse de recherche) et supprimera tous les documents supprimés (remplacés). Solr est un magasin de données en lecture seule, donc chaque fois que vous indexez un document, il marquera l'ancien document comme supprimé, puis créera un tout nouveau document pour remplacer celui supprimé. Optimiser supprimera ces documents supprimés. Vous pouvez voir le nombre de documents de recherche par rapport au nombre de documents supprimés en accédant à la page Statistiques Solr et en consultant les numéros numDocs vs maxDocs. La différence entre les deux nombres est la quantité de documents supprimés (ne pouvant pas être recherchés) dans l'index.

Optimiser optimise également un NOUVEL index entier à partir de l'ancien, puis passe au nouvel index une fois terminé. Par conséquent, la commande nécessite le double de l'espace pour effectuer l'action. Vous devrez donc vous assurer que la taille de votre index ne dépasse pas% 50 de votre espace disponible sur le disque dur. (Il s'agit d'une règle de base, il a généralement besoin de moins de% 50 en raison des documents supprimés)

Index Server/Search Server: Paul Brown avait raison en ce que la meilleure conception pour solr est d'avoir un serveur dédié et réglé pour l'indexation, puis de répliquer les modifications sur les serveurs de recherche. Vous pouvez régler le serveur d'index pour avoir plusieurs points de terminaison d'index.

eg: http://solrindex01/index1; http://solrindex01/index2

Et puisque le serveur d'indexation ne recherche pas de contenu, vous pouvez le configurer avec différentes empreintes mémoire et commandes de réchauffement d'index, etc.

J'espère que ces informations sont utiles pour tout le monde.

137
James Roland

La façon dont ce genre de chose est généralement effectuée consiste à effectuer des opérations de validation/optimisation sur un nœud Solr situé hors du chemin de demande pour vos utilisateurs. Cela nécessite du matériel supplémentaire, mais cela garantit que la pénalité de performance des opérations d'indexation n'affecte pas vos utilisateurs. La réplication est utilisée pour transférer périodiquement les fichiers d'index optimisés du nœud maître vers les nœuds qui effectuent des requêtes de recherche pour les utilisateurs.

7
Paul Brown

Essayez-le d'abord. Ce serait vraiment mauvais si vous évitiez une solution simple et élégante simplement parce que vous lisez qu'elle pourrait causer un problème de performances. En d'autres termes, évitez optimisation prématurée .

1
John