J'ai une table de produits sur ma base de données, et un tableau avec les caractéristiques de ce produit. La table des caractéristiques a 3 colonnes: id, type et valeur. Id est une clé étrangère des produits. Un exemple de données sur mes tables: Produits de table:Comment indexer des lignes comme des colonnes dans Solr
ID | Description |
01 Computer A
02 voitures
03 Computer B
Tableau: Caractéristiques
ID | Type | Valeur |
01 Processeur Phenom X3
01 Mémoire 2 Go
01 HDD 500Go
02 Couleur Bleu
02 Mark Ford
03 Processeur Phenom X3
03 Mémoire 3GB
Je veux la meilleure façon d'indexer, donc, un exemple, lorsque quelqu'un cherche « ordinateur », les émissions de facettage:
Phenom X3 (2)
mémoire de 2 Go (1)
3 Go de mémoire (1)
HDD 500Go (1)
Et ainsi de suite, avec la chaîne liée de requête. Si je fais une requête avec la chaîne "processeur", elle listera Phenom X3 (1) seulement si ces produits (avec "processeur" sur la description) ont une fonctionnalité comme Processeur: Phenom X3. Il y a beaucoup de types de produits, donc nous ne pouvons pas créer des colonnes statiques pour toutes les fonctionnalités et les transmettre à Solr ... J'espère que ma question sera claire, merci d'avance!
Super, ça m'a beaucoup aidé. J'ai fait la concat avec templatetransformer, mais il semble que les données sous le champ type_value soient mal indexées. Je reçois "amd phenom X 3 intel I 5" (tous dépouillé) au lieu de quelque chose comme "Amd: Phenomx3 intel: i5". En outre, il existe un moyen de vérifier sur Solr ce qui est indexé, comme une requête sur la base de données, quand les lignes sont retournées? –
Ok, après quelques recherches, je trouve les réponses: utilisé tokenizer classe solr.KeywordTokenizerFactory. Cela rend la concatation très efficace (le solr.WhitespaceTokenizerFactory sépare chaque espace). En outre, j'utilise Luke pour voir ce qui est indexé. Je pense qu'il y a une autre façon de le faire, mais je suis content de ce qu'il fait. Merci! –