Дисплей эллипсис до и после фрагмента в Solr
Вопрос
У меня Solr настроен для возврата фрагментов с фрагризом 500.
Иногда все поле - 500 символов или менее, поэтому фрагмент идентичен поле. Для полей, которые дольше, чем это, SOLR просто возвращает фрагмент без каких-либо индикации (или настолько похоже), что фрагмент представляет собой только часть содержимого поля. Это означает, что фрагмент может начать середине предложения.
Я хочу понять пользователям, которые они смотрят на фрагмент и просто отображают эллипсис в конце и / или начать такой фрагмент. Это функциональность, встроенная в Solr? Если нет, как бы вы ходили в установку эллипсиса?
Решение
То, что я закончил, возвращал как фрагмент, так и неизменное поле, из которого был создан фрагмент.
Затем я написал какую-то логику, которая сравнила два, чтобы определить, следует ли добавлять эллипсис к фрагменту и, если так, добавлять его до, после или как до, так и после фрагмента.
Другие советы
Solr не вернет индикатор, вы правы.
Установите свой Fragsize до 501. Тогда его быстрый бит логики в вашем интерфейсе UI, чтобы определить, следует ли отображаться эллипсис или нет.
Обрезать что-нибудь 501-500 и добавить эллипсис.
Я просто имел дело с той же проблемой. То, как я пошел, это следующее:
- Получить оригинальную строку
- Получить как первые, так и последние 10 символов исходной строки
- Получить как первые, так и последние 10 символов фрагмента, возвращаемого поиском SOLR
Сравните оба, и заполните переменную при необходимости!
$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;
Вот еще один лучший подход. Создавая индекс, добавьте атрибут «Teaser», который имеет эту логику уже примененной. Выдвиньте эти усилия из ваших запросов в целом. Это именно то, как я сделаю это.