Je veux essentiellement Solr pour rechercher chaque enregistrement du champ pour mon multivalué paramètre de recherche .. lire sur mon exemple:En Solr, Comment interroger contre un champ pour ensemble de valeurs distinctes dans un champ multivalué
J'utilise Solr pour indexer mes données. J'ai des données d'application dans des tableaux parallèles (sous la forme de champs à valeurs multiples) qui correspondent à un produit donné. Voir l'exemple suivant, où marque, le modèle et l'année sont des champs à valeurs multiples:
<-solr record start->
sku: 1234
make: acura, acura, acura
model: integra, rsx, rsx
year: 1997, 2004, 2000
engine: 3.4, 4.5, 4.5
<-solr record end->
J'utilise des requêtes de filtre (& fq de =) pour affiner mes sélections. Le problème est que si quelqu'un recherche un Acura Integra 2000, il correspondra à l'enregistrement ci-dessus, mais comme les données make, model et year sont codées en parallèle, il n'y a pas d'Acura Integra 2000 pour ce produit. Solr fait correspondre le make dans le champ make, le modèle dans le champ du modèle, et le champ année dans l'année (comme il se doit) et retourne ce résultat, et ne respecte pas mon parallélisme. Ma Recherche ressemblerait à ceci jusqu'à présent:
fq=make:"acura"&fq=model:"integra"&fq=year:2000 (I would normally escape URL characters when I POST to Solr, this is just an example)
Donc ma solution était de créer un autre champ multivalué, appelé champ résumé, dans lequel je mettrais toute la marque, le modèle, l'année et d'autres données (comme moteur) ensemble séparés par un espace. Il est nécessaire d'avoir des citations autour des mots afin que les termes avec des mots multiples ne correspondent pas aux paramètres de recherche par inadvertance. L'exemple ci-dessus maintenant ressembler à ceci:
<-solr record start->
sku: 1234
make: acura, acura, acura
model: integra, rsx, rsx
year: 1997, 2004, 2000
engine: 3.4, 4.5, 4.5
summary: "acura" "integra" "1997" "3.4", "acura" "rsx" "2004" "4.5", "acura" "rsx" "2000", "4.5"
<-solr record end->
Je puis ajouter à ma requête les éléments suivants:
summary:(""acura" AND "integra" AND "2000")
Je me attends, si j'ajouté que ma requête, que cette l'enregistrement ne viendrait plus, puisqu'il n'y a pas acura integra 2000 dans le champ résumé. Cependant, cela ne fonctionne pas. Le disque arrive toujours. Je suis perplexe. Quelqu'un at-il une solution à ce problème. Ça me tue depuis des jours.
Je souhaite fondamentalement Solr pour rechercher chaque enregistrement du champ à valeurs multiples pour mon paramètre de recherche .. est-ce possible? Y a-t-il une meilleure façon de faire ce que j'essaie de faire?
Merci
Salut. C'était ma solution originale exactement, et cela fonctionne parfaitement! Le seul problème est, lorsque vous allez à l'écran du produit de mon site, vous visualisez le nombre d'applications au lieu du nombre de produits. Si la même marque, le même modèle et la même année appartiennent à un sku, et que seul le moteur ou le sous-modèle est différent, je l'indique simplement dans une section "ajustée" en dessous du produit. Par exemple, je pourrais rouler 4 applications ensemble dans 1 "boîte" de produit sur mon site. Les résultats de la recherche devraient indiquer la visualisation 1 de 1. Au lieu de cela, il est indiqué de regarder 4 sur 4 (même s'il y a une boîte sur l'écran). Par conséquent, mon nouveau schéma ... – Dan
@Dan: jetez un oeil à l'effondrement de champ: http://wiki.apache.org/solr/FieldCollapsing –
Parce que le problème est un SKU (12345) peut s'adapter à plusieurs véhicules. avoir chacun un SKU + un véhicule en tant que son propre enregistrement est agréable, mais les voir comme un client est horrible. En enroulant chaque véhicule (et applications) et en l'attachant au même SKU, il le rend plus visible. Cependant, vous pourriez voir 10 applications par page, mais vous n'avez que 3 "boîtes" dans lesquelles un utilisateur peut acheter quelque chose. Donc, il est dit Affichage des articles 1 à 10, mais seulement 3 "boîtes" avec des images et un "bouton pour acheter" est répertorié. – Dan