Frage

Ich habe SOLR zu Rückkehr Fragmente mit einer fragsize von 500.

konfiguriert

Manchmal, das ganze Feld ist 500 Zeichen oder weniger, so dass das Fragment auf das Feld identisch ist. Für Felder, die länger als jene sind, gibt SOLR nur das Fragment ohne Angabe (so scheint es), dass das Fragment nur einen Teil des Inhalts eines Feldes darstellt. Das bedeutet, dass das Fragment mitten im Satz beginnen kann.

Ich möchte es für die Nutzer deutlich machen, dass sie an einem Fragment freuen und einfach Auslassungszeichen angezeigt werden am Ende und / oder eines solchen Fragments starten. Ist diese Funktionalität in SOLR gebaut? Wenn nicht, wie würden Sie gehen über Auslassungszeichen einfügen?

War es hilfreich?

Lösung

Was ich am Ende tat beide zurückkehren, das Fragment und das unveränderte Feld, aus dem das Fragment erstellt wurde.

Ich schrieb dann eine gewisse Logik, dass die beiden verglichen, um zu bestimmen, ob Auslassungs sollte dem Fragment und wenn ja, zugegeben werden, ob es sich um vor, nach oder sowohl vor als auch nach dem Fragment.

Andere Tipps

Solr wird keine Anzeige zurückkehren, du hast Recht.

Stellen Sie Ihren fragsize auf 501. Dann ist es eine schnelle wenig Logik in Ihrer Benutzeroberfläche, um zu bestimmen, ob Auslassungszeichen angezeigt werden soll oder nicht.

Kürzen alles 501-500 und Add Ellipsen.

ich behandelt nur mit dem gleichen Problem. Die Art und Weise ging ich über das tun dies ist die folgende:

  1. Holen Sie sich das ursprüngliche Zeichenfolge
  2. Get beide die ersten und letzten 10 Zeichen der ursprünglichen Zeichenfolge
  3. Get beide die ersten und letzten 10 Zeichen des Fragments durch die Solr Suche ergab
  4. Vergleichen Sie die beiden und fill in einer Variablen bei Bedarf!

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

Hier ist ein weiterer besserer Ansatz. Während der Erstellung des Index, fügen Sie ein „Teaser“ Attribut, das diese Logik hat bereits angewendet. Drücken Sie diese Bemühungen aus Ihren Anfragen zusammen. Das ist genau das, wie ich dies tun würde.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top