solr et plusieurs sites plone

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

solr et plusieurs sites plone

ehardy
Bonjour,

Je souhaiterais utiliser un moteur Solr pour indexer plusieurs sites plone. Le problème est que l'index path_string est construit uniquement avec la méthode :
'/'.join(obj.getPhysicalPath())

Je pensais qu'une solution simple aurait été de patcher cette méthode pour que ce soit plutôt absolute_url() qui soit stocké. Cependant, le monkey-patch ne fonctionne pas, et il me semble que c'est en raison du décorateur. La méthode complète est la suivante (dans collective/solr/attributes.py) :
@indexer(Interface)
def path_string(obj, **kwargs):
    """ return physical path as a string """
    return '/'.join(obj.getPhysicalPath())

J'en conviens, cette façon de procéder est un peu triviale, mais elle permettait, dans un premier temps, d'avoir l'url complète des éléments dans les résultats de la recherche.

Qui pourrait me guider, éventuellement en me fournissant une URL avec une doc, pour réaliser cette opération.

L'objectif serait d'indexer dans une seule instance de Solr plusieurs sites de mon institut et, ainsi, à partir d'une recherche sur un site, trouver des informations dans d'autres sites.

Merci d'avance,
Eric


--
Hardy Eric
Institut Universitaire Européen de la Mer
Tel: 02 98 49 87 16

_______________________________________________
Plone-FR mailing list
[hidden email]
https://lists.plone.org/mailman/listinfo/plone-plone-fr
Reply | Threaded
Open this post in threaded view
|

Re: solr et plusieurs sites plone

Gilles Lenfant-2
Hmmm mauvaise idée ;)

La "philosophie" de Plone veut que les URLs internes soient toujours
générées en fonction du request, et jamais enregistrées pour un usage
futur.

Le 18 mai 2015 17:24, Hardy Eric <[hidden email]> a écrit :

> Bonjour,
>
> Je souhaiterais utiliser un moteur Solr pour indexer plusieurs sites plone. Le problème est que l'index path_string est construit uniquement avec la méthode :
> '/'.join(obj.getPhysicalPath())
>
> Je pensais qu'une solution simple aurait été de patcher cette méthode pour que ce soit plutôt absolute_url() qui soit stocké. Cependant, le monkey-patch ne fonctionne pas, et il me semble que c'est en raison du décorateur. La méthode complète est la suivante (dans collective/solr/attributes.py) :
> @indexer(Interface)
> def path_string(obj, **kwargs):
>     """ return physical path as a string """
>     return '/'.join(obj.getPhysicalPath())
>
> J'en conviens, cette façon de procéder est un peu triviale, mais elle permettait, dans un premier temps, d'avoir l'url complète des éléments dans les résultats de la recherche.
>
> Qui pourrait me guider, éventuellement en me fournissant une URL avec une doc, pour réaliser cette opération.
>
> L'objectif serait d'indexer dans une seule instance de Solr plusieurs sites de mon institut et, ainsi, à partir d'une recherche sur un site, trouver des informations dans d'autres sites.
>
> Merci d'avance,
> Eric
>
>
> --
> Hardy Eric
> Institut Universitaire Européen de la Mer
> Tel: 02 98 49 87 16
>
> _______________________________________________
> Plone-FR mailing list
> [hidden email]
> https://lists.plone.org/mailman/listinfo/plone-plone-fr



--
--
Gilles LENFANT
Ingénieur avant-vente - Architecte senior
ALTER WAY SOLUTIONS
T : 01 78 15 24 00
F : 01 46 02 44 04

1 rue Royal, Bat. D
227, les Bureaux de la Colinne
92210 Saint Cloud
http://www.alterway.fr/solutions

Téléchargez notre nouveau livre blanc "Python, le développement autrement"
http://www.alterway.fr/publications/python-le-developpement-autrement
_______________________________________________
Plone-FR mailing list
[hidden email]
https://lists.plone.org/mailman/listinfo/plone-plone-fr
Reply | Threaded
Open this post in threaded view
|

Re: solr et plusieurs sites plone

Eric BREHAULT
In reply to this post by ehardy
Bonjour,

Plutôt que de patcher path_string (ce qui peut avoir des effets de bord potentiellement néfastes), le plus simple serait certainement d'indexer absolute_url (on rajoute "absolute_url" dans les metadata du portal_catalog et la valeur sera stockée à chaque indexation).
Le soucis c'est que la valeur indexée risque d'être fausse.
En effet, imaginons qu'un contenu soit indexé au moment où un utilisateur clique sur "Enregistrer" depuis le site, absolute_url aura bien la valeur correspondant à l'url extérieure du contenu. Mais si cela se passe via une opération réalisée en local (par exemple), alors absolute_url commencera par "http://localhost" et Solr stockera des urls incorrectes.
C'est donc assez risqué d'indexer absolute_url, on ne sait jamais ce qu'il contiendra.

Une solution plus solide consiste à générer cette url au moment où on l'envoie à Solr, et on contrôle alors le domaine qu'on souhaite lui adjoindre.

Eric

2015-05-18 17:24 GMT+02:00 Hardy Eric <[hidden email]>:
Bonjour,

Je souhaiterais utiliser un moteur Solr pour indexer plusieurs sites plone. Le problème est que l'index path_string est construit uniquement avec la méthode :
'/'.join(obj.getPhysicalPath())

Je pensais qu'une solution simple aurait été de patcher cette méthode pour que ce soit plutôt absolute_url() qui soit stocké. Cependant, le monkey-patch ne fonctionne pas, et il me semble que c'est en raison du décorateur. La méthode complète est la suivante (dans collective/solr/attributes.py) :
@indexer(Interface)
def path_string(obj, **kwargs):
    """ return physical path as a string """
    return '/'.join(obj.getPhysicalPath())

J'en conviens, cette façon de procéder est un peu triviale, mais elle permettait, dans un premier temps, d'avoir l'url complète des éléments dans les résultats de la recherche.

Qui pourrait me guider, éventuellement en me fournissant une URL avec une doc, pour réaliser cette opération.

L'objectif serait d'indexer dans une seule instance de Solr plusieurs sites de mon institut et, ainsi, à partir d'une recherche sur un site, trouver des informations dans d'autres sites.

Merci d'avance,
Eric


--
Hardy Eric
Institut Universitaire Européen de la Mer
Tel: 02 98 49 87 16

_______________________________________________
Plone-FR mailing list
[hidden email]
https://lists.plone.org/mailman/listinfo/plone-plone-fr


_______________________________________________
Plone-FR mailing list
[hidden email]
https://lists.plone.org/mailman/listinfo/plone-plone-fr
Reply | Threaded
Open this post in threaded view
|

Re: solr et plusieurs sites plone

ehardy
Bonjour,

Merci pour les réponses !

J'avais, en effet pensé à ce problème par rapport à absolute_url() et la solution est peut-être de créer un nouvel index du genre absoluteUrl et un @indexer qui gère cet index à partir d'un paramètre saisi dans le control panel spécifiant l'URL de base, propre à chaque site.
C'était dans ce sens là que je pensais patcher path_string.

Bonne journée,
Eric

Le 18 mai 2015 à 20:12, Eric Bréhault <[hidden email]> a écrit :

> Bonjour,
>
> Plutôt que de patcher path_string (ce qui peut avoir des effets de bord potentiellement néfastes), le plus simple serait certainement d'indexer absolute_url (on rajoute "absolute_url" dans les metadata du portal_catalog et la valeur sera stockée à chaque indexation).
> Le soucis c'est que la valeur indexée risque d'être fausse.
> En effet, imaginons qu'un contenu soit indexé au moment où un utilisateur clique sur "Enregistrer" depuis le site, absolute_url aura bien la valeur correspondant à l'url extérieure du contenu. Mais si cela se passe via une opération réalisée en local (par exemple), alors absolute_url commencera par "http://localhost" et Solr stockera des urls incorrectes.
> C'est donc assez risqué d'indexer absolute_url, on ne sait jamais ce qu'il contiendra.
>
> Une solution plus solide consiste à générer cette url au moment où on l'envoie à Solr, et on contrôle alors le domaine qu'on souhaite lui adjoindre.
>
> Eric
>
> 2015-05-18 17:24 GMT+02:00 Hardy Eric <[hidden email]>:
> Bonjour,
>
> Je souhaiterais utiliser un moteur Solr pour indexer plusieurs sites plone. Le problème est que l'index path_string est construit uniquement avec la méthode :
> '/'.join(obj.getPhysicalPath())
>
> Je pensais qu'une solution simple aurait été de patcher cette méthode pour que ce soit plutôt absolute_url() qui soit stocké. Cependant, le monkey-patch ne fonctionne pas, et il me semble que c'est en raison du décorateur. La méthode complète est la suivante (dans collective/solr/attributes.py) :
> @indexer(Interface)
> def path_string(obj, **kwargs):
>     """ return physical path as a string """
>     return '/'.join(obj.getPhysicalPath())
>
> J'en conviens, cette façon de procéder est un peu triviale, mais elle permettait, dans un premier temps, d'avoir l'url complète des éléments dans les résultats de la recherche.
>
> Qui pourrait me guider, éventuellement en me fournissant une URL avec une doc, pour réaliser cette opération.
>
> L'objectif serait d'indexer dans une seule instance de Solr plusieurs sites de mon institut et, ainsi, à partir d'une recherche sur un site, trouver des informations dans d'autres sites.
>
> Merci d'avance,
> Eric
>
>
> --
> Hardy Eric
> Institut Universitaire Européen de la Mer
> Tel: 02 98 49 87 16
>
> _______________________________________________
> Plone-FR mailing list
> [hidden email]
> https://lists.plone.org/mailman/listinfo/plone-plone-fr
>
> _______________________________________________
> Plone-FR mailing list
> [hidden email]
> https://lists.plone.org/mailman/listinfo/plone-plone-fr

--
Hardy Eric
Institut Universitaire Européen de la Mer
Tel: 02 98 49 87 16

_______________________________________________
Plone-FR mailing list
[hidden email]
https://lists.plone.org/mailman/listinfo/plone-plone-fr