[решено] Search API + фильтры

Аватар пользователя shevgeny

Есть настроенный поиск по сайту на базе Search API через Apache Solr Search. Всё работает, но возник вопрос с совершенствованием поисковой выдачи.

К примеру, в материале есть фраза «ремонт квартир в москве». Она участвует в индексации и по этому запросу материал вполне успешно индексируется. Однако, мы можем ввести просто «квартиры в москве» и тут этот же материал тоже будет в результатах поиска, но это не правильно, он нерелевантен с точки зрения логики.

Поэтому возник вопрос, а можно ли как-то исключить определенные материалы из поисковой выдачи по определенным поисковым запросам? Мне приходит в голову что-то вроде добавления поля в тип материала со списком запросов-исключений. Вопрос в том, как по этому полю отфильтровать результаты? То есть если в поле материала «запросы-исключения» есть «квартиры в москве», то по этому запросу материал не показывать.

Буду очень благодарен за любые конструктивные мысли и предложения :)

РЕШЕНИЕ:
В моем случае, все варианты, описанные в комментариях — не подходят. Возможно кому-то тоже пригодится. Как писал выше, мне нужно было создать какое-то условное поле в типе материала, в котором я буду писать запросы-исключения, из поиска по которым этот материал будет исключен.
1. Создаю такое поле
2. В материале прописываю значения
3. В настройках индекса включаю поиск по этому полю
4. В настройках раскрытого фильтра view исключаю поиск по этому полю
5. В контекстных фильтрах view добавляю это поле и настраиваю следующим образом:
- Предоставить аргумент по умолчанию > PHP-код > <?phpif (!empty($_GET["query"])){ return $_GET["query"];}?>
- Ещё > Исключить (ставим галку)
И вуаля! :)

Модули и темы:
Тип материала:
Версия Drupal:
0 Thanks

Комментарии

Аватар пользователя Lotar
Lotar 3 года назад

Поставьте точное совпадение.

Аватар пользователя shevgeny
shevgeny 3 года назад
Lotar написал:
Поставьте точное совпадение.

Не поможет, пробовал. В примере, который я описал (просмотрите ещё разок), видно, что точное совпадение не поможет.

Аватар пользователя multpix
multpix 3 года назад
shevgeny написал:
К примеру, в материале есть фраза «ремонт квартир в москве». Она участвует в индексации и по этому запросу материал вполне успешно индексируется. Однако, мы можем ввести просто «квартиры в москве» и тут этот же материал тоже будет в результатах поиска, но это не правильно, он нерелевантен с точки зрения логики.

Структурируйте материалы.
Грубо говоря: «ремонт квартир в москве» и «квартиры в москве» должны быть классифицированы тегами "ремонт" и "аренда" соответственно.

Аватар пользователя shevgeny
shevgeny 3 года назад
multpix написал:
Структурируйте материалы.
Грубо говоря: «ремонт квартир в москве» и «квартиры в москве» должны быть классифицированы тегами "ремонт" и "аренда" соответственно.

Теги имеются, поиск по ним тоже включён, но я говорю непосредственно о поисковой выдаче и обработке запросов. Пока не понимаю, как ваше предложение поможет в описанной ситуации.

Аватар пользователя multpix
multpix 3 года назад
shevgeny написал:
Теги имеются

а фасеты на основе этих тегов помогут пользователю уточнить выборку.

Аватар пользователя shevgeny
shevgeny 3 года назад
multpix написал:
shevgeny написал:
Теги имеются

а фасеты на основе этих тегов помогут пользователю уточнить выборку.

Фасеты — да, но я, ведь, не о них говорю. О фасетах думал, но для моих целей они, увы, не подойдут. Нужно именно какое-то исключение из выдачи некоторых материалов по определенным запросам. Ситуация, конечно, очень частная, но мне думается, что есть варианты, просто пока никак не соображу направление движения))

Аватар пользователя goodboy
goodboy 3 года назад

Напишите свой процессор для Search API. Наиболее близкий, на мой взгляд, это stopwords ( /sites/all/modules/search_api/includes/processor_stopwords.inc )

Аватар пользователя shevgeny
shevgeny 3 года назад
Goodboy написал:
Напишите свой процессор для Search API. Наиболее близкий, на мой взгляд, это stopwords ( /sites/all/modules/search_api/includes/processor_stopwords.inc )

ага… спасибо, не совсем то, что я ищу, но, возможно, поможет. Буду пробовать.

Аватар пользователя dashiwa
dashiwa 3 года назад

А кто уже писал? Это просто да?

Аватар пользователя shevgeny
shevgeny 3 года назад
dashiwa написал:
А кто уже писал? Это просто да?

?