2010-10-07 3 views
1

Je dois trouver tous les éléments dans Sitecore (ou plutôt dans le contenu) qui ont un certain profil OMS (suite marketing) coché dans l'attribut "Suivi". L'attribut de suivi semble être stocké sous forme de XML et a une valeur brute commeTrouver des éléments de sitecore avec un profil OMS spécifique?

<tracking> 
    <profile name="Widdly Scuds"><!-- some irrelevant keys... --></profile> 
</tracking> 

et je dois chercher, par exemple, tous les éléments avec le profil « Widdly Scuds ».

La première solution à laquelle j'ai pensé était une requête rapide sur l'attribut Tracking. Sitecore requête ou XML devrait explorer le contenu entier à chaque fois, ce qui probablement être inacceptablement lent, mais je vais essayer s'il n'y a pas d'alternatives.

Ceci est la première requête rapide j'ai essayé:

fast://*[@Tracking = '%Widdly Scuds%'] 

mais qui retourne 0. J'ai donc essayé ceci:

fast://*[@Tracking = '<tra%'] 

et ce (qui correspondent aux noms de plusieurs des profils:.

fast://*[@Tracking = '%A%'] 

Et les retours aussi 0 résultats que je ne suis pas vraiment certaine façon dont le suivi est stocké ou interrogé, mais il semble être inhabituel, car je ne peux pas obtenir de résultats de toute façon.

La requête doit être assez rapide pour exécuter quelques dizaines de fois au cours d'un court rendu de la page (probablement pas plus de 20-30 secondes.) Les résultats peuvent être mis en cache pendant un certain temps, mais pas très longtemps. La première page d'une section du site sur laquelle je travaille doit afficher un nombre d'éléments pour chaque profil que j'interroge, et il y aura peut-être des profils 50-ish.

Alors, comment obtenir rapidement tous les articles ayant un certain profil marketing?

Édition: J'ai fini par utiliser Lucene. Détails de cette aventure à apparaître dans les questions futures, peut-être ...

Répondre

1

Si vous utilisez une requête ou que vous itérez des descendants, évitez de lancer la requête depuis/si possible - démarrez à partir de l'équivalent de/sitecore/content/someitem.

Une autre approche consiste à utiliser un Lucene ou un autre index de recherche. See the Sitecore reference for more info.

+0

Même s'il s'agit d'une requête rapide? Pour une raison ou pour une autre, j'avais l'impression que l'utilisation d'un chemin avec une requête rapide rendait la requête plus lente qu'en utilisant // *. Aussi, je suis déjà en train de le reconstruire sur Lucene, donc vous l'avez appelé ... –

1

Ugh, le champ Tracking est actuellement stocké comme __Tracking. Oups. Ainsi, la requête finit par être

fast://*[@__Tracking = '%"Widdly Scuds"%'] 

Cela a encore des problèmes, car il essaie toujours d'interroger XML via des opérations de chaîne et je peux finir vissé plus tard si un profil et clé ont le même nom, mais cela fonctionne assez bien pour l'instant.

Questions connexes