none
SharePoint 2007 - Recherche par interfixe et par suffixe RRS feed

  • Question

  • Pour la recherche par préfixe, j'utilise le WebPart MOSS Wildcard Search (https://wildcardsearch.codeplex.com/) qui fonctionne très bien.

    Par contre, d'après ce que j'ai pu lire ici (http://blogs.microsoft.co.il/blogs/adir_ron/archive/2007/07/10/Guidance-on-Wildcard_2F00_Boolean-search-for-SharePoint-2007.aspx) et là (http://msdn.microsoft.com/en-us/library/ms552152.aspx), la recherche par interfixe et par suffixe n'est pas gérée par MOSS 2007.

    Est-ce bien le cas ?

    Existe-t-il un composant qui permet d'ajouter la prise en charge de ce type de recherche ?

    Je n'ai pas testé Ontolica qui a l'air de faire la même chose que MOSS Wildcard Search mais en mois bien.

    Exemple de recherche: on doit pouvoir trouver les occurences du mot "anticonstitutionnellement" en ayant saisi "anti", "constitu" ou "ellement" dans le moteur de recherche.

    • Modifié Jon Seldon mercredi 4 septembre 2013 07:46
    mardi 3 septembre 2013 15:20

Réponses

  • La solution mise en place est la suivante:

    Modification du WP Wildcard Search (DotNetMafia), telle que préconisé ici:

    http://social.technet.microsoft.com/Forums/sharepoint/en-US/173b51ce-f660-4475-9bb8-f07625ea46e1/advice-on-implementing-fullblown-wildcard-search-pre-and-suffix

    Un paramètre a été ajouté au WP pour définir la liste des "manages properties" ajoutées à la requête de recherche. Le code parcourt l'ensemble de ces managed properties et ajoute une clause "LIKE" pour chaque mot clé recherché. Une clause CONTAINS a également été ajoutée pour chaque mot clé.

    A noter que le code initial du WP ne semble pas correct car il génère des clauses telles que CONTAINS ('"keyword1 keyword2*"') là où on devrait avoir CONTAINS ('"keyword1*"') OR CONTAINS ('"keyword2*"') d'après la syntaxe décrite sur MSDN.

    Exemple de requête générée:

    Mots clés: 5 ear

    Managed properties: champ1, champ2

    SELECT WorkId, Rank, Title, Author, Size, Path, Description, Write, SiteName, CollapsingStatus, HitHighlightedSummary, HitHighlightedProperties, ContentClass, IsDocument, PictureThumbnailURL
    FROM Scope()
    WHERE ( champ1 LIKE '%5%' OR  champ1 LIKE '%ear%' OR  champ2 LIKE '%5%' OR  champ2 LIKE '%ear%')
       OR
    ( CONTAINS ('"5*"') OR  CONTAINS ('"ear*"'))


    • Modifié Jon Seldon lundi 16 septembre 2013 15:30
    • Marqué comme réponse Jon Seldon lundi 16 septembre 2013 15:30
    lundi 16 septembre 2013 15:29

Toutes les réponses

  • Bonjour,

    Pouvez-vous nous donner des exemples de recherche ?

    Mon ancien client a justement Ontolica d'installé sous MOSS 2007, je peux demander à mon remplaçant de tester :)

    mardi 3 septembre 2013 19:28
    Modérateur
  • Merci pour la proposition.

    Je viens d'ajouter un exemple dans mon post.

    • Modifié Jon Seldon mercredi 4 septembre 2013 07:51
    mercredi 4 septembre 2013 07:47
  • La solution mise en place est la suivante:

    Modification du WP Wildcard Search (DotNetMafia), telle que préconisé ici:

    http://social.technet.microsoft.com/Forums/sharepoint/en-US/173b51ce-f660-4475-9bb8-f07625ea46e1/advice-on-implementing-fullblown-wildcard-search-pre-and-suffix

    Un paramètre a été ajouté au WP pour définir la liste des "manages properties" ajoutées à la requête de recherche. Le code parcourt l'ensemble de ces managed properties et ajoute une clause "LIKE" pour chaque mot clé recherché. Une clause CONTAINS a également été ajoutée pour chaque mot clé.

    A noter que le code initial du WP ne semble pas correct car il génère des clauses telles que CONTAINS ('"keyword1 keyword2*"') là où on devrait avoir CONTAINS ('"keyword1*"') OR CONTAINS ('"keyword2*"') d'après la syntaxe décrite sur MSDN.

    Exemple de requête générée:

    Mots clés: 5 ear

    Managed properties: champ1, champ2

    SELECT WorkId, Rank, Title, Author, Size, Path, Description, Write, SiteName, CollapsingStatus, HitHighlightedSummary, HitHighlightedProperties, ContentClass, IsDocument, PictureThumbnailURL
    FROM Scope()
    WHERE ( champ1 LIKE '%5%' OR  champ1 LIKE '%ear%' OR  champ2 LIKE '%5%' OR  champ2 LIKE '%ear%')
       OR
    ( CONTAINS ('"5*"') OR  CONTAINS ('"ear*"'))


    • Modifié Jon Seldon lundi 16 septembre 2013 15:30
    • Marqué comme réponse Jon Seldon lundi 16 septembre 2013 15:30
    lundi 16 septembre 2013 15:29