Search Api, Drupal 8. Вывод частичного совпадения

Аватар пользователя symbians60v5 symbians60v5 14 марта в 10:54

Здравствуйте. Был установлен стандартный модуль поиска Drupal - а. Позже он был заменен на search api. Но возникла проблема. В стандартном поиске был реализован функционал вывода совпадения в полях. Пытался найти данную фичу в search api, но не нашел. Был бы крайне благодарен за подсказку как это реализвать в search api (скриншот прилагаю, за немного непонятное описание прошу прощение. Не до конца понимаю как правильно сформулировать)

0 Thanks

Лучший ответ

Аватар пользователя vlucas vlucas 14 марта в 14:10
2

Во вьюсе для этого есть поле "цитата"

Комментарии

Аватар пользователя vlucas vlucas 14 марта в 13:04

Если речь о подсветке, то там есть для этого процессор highlighted.
Если о чем то другом - то разверните вопрос

Аватар пользователя vlucas vlucas 14 марта в 13:46

Если нужно по части слова искать, то здесь с выделением фрагмента могут быть трудности, т.к. из коробки highlighted так не работает.

Я делал так:

  • Ставим snowball_stemmer
  • Пишем свой процессор для подсветки (его и будем использовать вместо стандартного) наследуясь от highlight и передав в него не ключевые слова, которые ввёл пользователь, что происходит по умолчанию, а keys, который приходит от stemmer. Для этого можно переопределить, например, postprocessSearchResults(), добавив проверку, например:
<?php
    
// Get all the keys that were made by stemmer.
    
$stem $query->getKeys();    
    if (
is_array($stem)) {
      foreach (
$stem as $key => $value) {
        if (
is_int($key)) {
          
$stem_keys[$value] = $value;
        }
      }
    } else {
      
$stem_keys = [$stem => $stem];
    }
    
$keys $stem_keys;
?>

Можно ещё доработать чтобы подсвечивался не стем, а слово целиком.

Аватар пользователя symbians60v5 symbians60v5 14 марта в 14:02

По части слова уже ищет. Надо чтобы выводилось предложение в котором это самое ключевое слово находится.