Domanda

Ho SOLR configurato a frammenti di ritorno con un fragsize di 500.

A volte, l'intero campo è di 500 caratteri o meno, in modo che il frammento è identico al campo. Per i campi che sono più lungo di quello, SOLR solo restituisce il frammento senza alcuna indicazione (o così sembra) che il frammento rappresenta solo parte del contenuto di un campo. Ciò significa che il frammento potrebbe iniziare a metà della frase.

voglio far capire agli utenti che stanno guardando un frammento e semplicemente visualizzare i puntini di sospensione alla fine e / o di inizio di un tale frammento. È che funzionalità incorporata in SOLR? Se no, come si va sull'inserimento di puntini di sospensione?

È stato utile?

Soluzione

Quello che ho finito per fare stava tornando sia il frammento e il campo inalterata da cui è stato creato il frammento.

Ho poi scritto una logica che ha confrontato i due al fine di determinare se i puntini di sospensione deve essere aggiunto al frammento e in caso affermativo, se inserirlo prima, dopo o prima e dopo il frammento.

Altri suggerimenti

Solr non restituirà un indicatore, hai ragione.

Impostare il fragsize a 501. Poi la sua un po 'veloce di logica nella vostra interfaccia utente per determinare se i puntini di sospensione deve essere visualizzato o meno.

Tronca nulla 501-500 e aggiungere i puntini di sospensione.

Ho appena affrontato lo stesso problema. Il modo in cui sono andato a fare questo è il seguente:

  1. Prendi la stringa originale
  2. Get sia il primo e l'ultimo 10 caratteri della stringa originale
  3. ottenere sia il primo e l'ultimo 10 caratteri del frammento restituiti dalla ricerca Solr
  4. Confronto sia, e compilare una variabile in caso di necessità!

    $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;
    

Ecco un altro approccio migliore. Durante la creazione dell'indice, aggiungere un attributo "teaser" che ha questa logica già applicata. Spingere questo sforzo dalle vostre richieste del tutto. Questo è esattamente come farei questo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top