Отображение многоточия до и после фрагмента в SOLR - PullRequest
6 голосов
/ 03 августа 2010

У меня есть SOLR, настроенный на возвращение фрагментов с размером фрагмента 500.

Иногда все поле составляет 500 символов или меньше, поэтому фрагмент идентичен полю.Для полей, которые длиннее этого, SOLR просто возвращает фрагмент без какого-либо указания (или так кажется), что фрагмент представляет только часть содержимого поля.Это означает, что фрагмент может начинаться с середины предложения.

Я хочу дать понять пользователям, что они смотрят на фрагмент и просто отображают многоточие в конце и / или начале такого фрагмента.Эта функциональность встроена в SOLR?Если нет, то как бы вы вставили многоточие?

Ответы [ 4 ]

1 голос
/ 30 сентября 2010

Я закончил тем, что возвращал как фрагмент, так и неизменное поле, из которого был создан фрагмент.

Затем я написал некоторую логику, которая сравнила эти два, чтобы определить, следует ли добавить многоточие кфрагмент и, если да, добавлять ли его до, после или как до, так и после фрагмента.

0 голосов
/ 18 октября 2010

Я только что имел дело с той же проблемой. Вот как я это сделал:

  1. Получить исходную строку
  2. Получить как первые, так и последние 10 символов исходной строки
  3. Получить первые и последние 10 символов фрагмента, возвращенного поиском Solr
  4. Сравните оба значения и при необходимости заполните переменную!

    $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;
    
0 голосов
/ 10 августа 2010

Вот еще один лучший подход.При создании индекса добавьте атрибут «тизер», к которому уже применяется эта логика.Вытолкните это усилие из ваших запросов в целом.Именно так я и сделал бы.

0 голосов
/ 08 августа 2010

Солр не вернет индикатор, ты прав.

Установите размер фрагмента на 501. Затем в вашем пользовательском интерфейсе появится небольшая логика, чтобы определить, должен ли отображаться многоточие или нет.

Обрежьте все от 501 до 500 и добавьте многоточие.

...