Question

I ai SOLR configuré pour renvoyer des fragments avec un fragsize de 500.

Parfois, tout le champ est de 500 caractères ou moins, de sorte que le fragment est identique au champ. Pour les champs qui sont plus que cela, SOLR retourne juste le fragment sans aucune indication (ou paraît-il) que le fragment ne représente qu'une partie du contenu d'un champ. Cela signifie que le fragment pourrait commencer à la mi-phrase.

Je veux dire clairement aux utilisateurs qu'ils sont à la recherche à un fragment et simplement afficher des points de suspension à la fin et / ou début d'un tel fragment. Est-ce que la fonctionnalité intégrée dans SOLR? Sinon, comment iriez-vous sur l'insertion des points de suspension?

Était-ce utile?

La solution

Ce que je fini par faire était de retour à la fois le fragment et le champ non modifié à partir de laquelle le fragment a été créé.

J'ai alors écrit une logique qui a comparé les deux afin de déterminer si des points de suspension doit être ajouté au fragment et si oui, que ce soit pour l'ajouter avant, après ou avant et après le fragment.

Autres conseils

Solr ne reviendra pas un indicateur, vous avez raison.

Définissez votre fragsize à 501. Ensuite, il est un peu rapide de la logique dans votre interface utilisateur pour déterminer si des points de suspension doit être affichée ou non.

tronquer quoi que ce soit 501-500 et ajouter des points de suspension.

Je viens eu affaire à la même question. La façon dont je suis allé à faire c'est le suivant:

  1. Obtenir la chaîne d'origine
  2. Obtenir le premier et le dernier 10 caractères de la chaîne d'origine
  3. Obtenir le premier et le dernier 10 caractères du fragment renvoyés par la recherche Solr
  4. Comparez les deux, et remplissez une variable en cas de besoin!

    $f_ellip = NULL;
    $l_ellip = NULL;
    if ($orig_body_beggining != substr((string)$hl_content->str, 0, 10)) {
        $f_ellip = "… ";
    }
    if ($orig_body_end != substr((string)$hl_content->str, 0, -10)) {
         $l_ellip = " …";
    }
    $entry_body = $f_ellip.(string)$hl_content->str.$l_ellip;
    

Voici une autre meilleure approche. Lors de la création de l'indice, ajoutez un attribut « teaser » qui a cette logique déjà appliquée. Pousser cet effort de vos demandes tout à fait. C'est exactement ce que je voudrais faire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top