Рейтинг:1

Как создать поиск Solr с частичными совпадениями и автозаполнением?

флаг cn

Я настроил окно поиска для сайта drupal и немного запутался, как заставить поиск работать с частичными совпадениями и разумным автозаполнением.

Некоторые основные детали:

  • Друпал: 9.3.9
  • Модули: Search API, Search API Autocomplete, Search API Solr
  • Солер: 8.11.1

Поиск ищет по разным полям из нескольких типов контента. Сначала я установил типы полей «Полный текст». Затем я заметил, что совпадают только полные слова. Таким образом, при поиске «идея» страницы, содержащие «идеи», не будут найдены. Это сработало, когда я изменил все типы полей на "Fulltext ngram". Но: теперь автозаполнение также предлагает все частичные варианты.Таким образом, ввод «супер» будет предлагать «суперх», «суперхэ» и «супергерой». Это не очень полезно для посетителей сайта.

Что я уже пробовал: автозаполнение использует подсказку «Получить с сервера». Я попытался включить дополнительный модуль «search_api_solr_autocomplete». Это добавляет еще три подсказки: «Проверка орфографии Solr», «Подсказка Solr» и «Условия Solr». Средство проверки орфографии не дало никаких предложений автозаполнения. Как и Solr Suggester. Solr Terminal делает то же самое, что и «Получить с сервера», предлагая все промежуточные шаги между искомым словом и готовым термином, буква в букву.

Я ищу подсказку, как настроить это так, чтобы поиск соответствовал токенам с частичным поиском, но для функции автозаполнения использовались только полные токены. Может быть, шаг конфигурации отсутствует?

флаг cn
Создан ли ваш блок поиска с использованием представлений с открытым фильтром с использованием поля «Полнотекстовый поиск»?
флаг cn
Да, я использую представление с фильтром полнотекстового поиска.
флаг cn
Возможно, вам придется создать два индекса, а затем использовать этот https://www.drupal.org/project/fac в поле ввода поиска. Это будет искать индекс без ngram для автозаполнения, но когда вы нажимаете поиск/отправить, он использует представление.
флаг cn
Извините за отсутствие обратной связи. Я потратил так много разочаровывающего времени на эту проблему, что мне нужно было какое-то время от нее отвлечься. Мое текущее решение заключается в том, что у меня есть новое поле, которое представляет собой конкатенацию содержимого всех других полей. Это поле является источником для автозаполнения. Это кажется правильным подходом, но на практике он не работает. Я думаю, я борюсь с выбором правильного типа поля для нового поля.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.