Disons que je veux indexer mon magasin en utilisant Solr Lucene. P>
J'ai de nombreux types d'entités: produits, critiques de produits, articles p>
Comment puis-je obtenir mon Lucene d'indexer ces types, mais chaque type avec un schéma différent? p>
4 Réponses :
Avec Lucene / Solr, chaque document n'a pas besoin de définir une valeur pour chaque champ. Dans le même schéma, vous pouvez avoir un ensemble de champs pour l'entité A et un autre ensemble de champs pour l'entité B et simplement peupler le champ approprié en fonction de l'entité. p>
Avec SOLR, vous avez également la possibilité d'aller multi-noyau. Chaque noyau a son propre schéma. Vous pouvez définir un noyau pour chaque entité. P>
Vous voudrez peut-être avoir 3 index appelés produits, productReviews et articles. Chaque index peut avoir son propre schéma. La différence entre Lucene et une approche relationnelle relationnelle est qu'une ligne d'une dB, grossièrement em> se traduit par un document à Lucene. Remarque: chaque document peut avoir son propre schéma (qui est une autre différence d'un dB relationnel). P>
Je recommande de créer votre index de manière à ce que toutes les entités ont plus ou moins les mêmes champs de base: Je parle d'expérience: nous gérons un index avec plus de 10 entités différentes et cette approche fonctionne comme le charme. P>
P.s. Quelques autres conseils simples. P>
Titre, contenu, URL, UUID, entité_type, entité_sourcename code> etc. Si chacune de vos entités A un ensemble unique de champ d'index correspondant, vous aurez du mal à construire une requête pour rechercher simultanément toutes les entités et que votre vue sur les résultats peut devenir un énorme désordre. Si vous avez besoin de champs spécifiques pour une entité spécifique, ajoutez-le et effectuez une logique spéciale pour cette entité basée sur son entité_type. P>
Multi-Core est une approche à utiliser avec soin. Avec un simple schéma comme le vôtre, c'est une meilleure façon de le faire comme Buru Recommander. Cela signifie trouver des champs communs entre vos différentes entités, puis les champs qui ne seront utilisés que par ou plusieurs d'entre eux. Vous pouvez ensuite ajouter un champ "Type" ou "Type_ID" qui dira si votre entité est produit, une critique de produit ... p>
Cela vous permettra d'avoir un index unique et de traiter rapidement les requêtes. P>