Есть настроенный поиск по сайту на базе Search API через Apache Solr Search. Всё работает, но возник вопрос с совершенствованием поисковой выдачи.
К примеру, в материале есть фраза «ремонт квартир в москве». Она участвует в индексации и по этому запросу материал вполне успешно индексируется. Однако, мы можем ввести просто «квартиры в москве» и тут этот же материал тоже будет в результатах поиска, но это не правильно, он нерелевантен с точки зрения логики.
Поэтому возник вопрос, а можно ли как-то исключить определенные материалы из поисковой выдачи по определенным поисковым запросам? Мне приходит в голову что-то вроде добавления поля в тип материала со списком запросов-исключений. Вопрос в том, как по этому полю отфильтровать результаты? То есть если в поле материала «запросы-исключения» есть «квартиры в москве», то по этому запросу материал не показывать.
Буду очень благодарен за любые конструктивные мысли и предложения
РЕШЕНИЕ:
В моем случае, все варианты, описанные в комментариях — не подходят. Возможно кому-то тоже пригодится. Как писал выше, мне нужно было создать какое-то условное поле в типе материала, в котором я буду писать запросы-исключения, из поиска по которым этот материал будет исключен.
1. Создаю такое поле
2. В материале прописываю значения
3. В настройках индекса включаю поиск по этому полю
4. В настройках раскрытого фильтра view исключаю поиск по этому полю
5. В контекстных фильтрах view добавляю это поле и настраиваю следующим образом:
- Предоставить аргумент по умолчанию > PHP-код > <?phpif (!empty($_GET["query"])){ return $_GET["query"];}?>
- Ещё > Исключить (ставим галку)
И вуаля!
Комментарии
Поставьте точное совпадение.
Не поможет, пробовал. В примере, который я описал (просмотрите ещё разок), видно, что точное совпадение не поможет.
Структурируйте материалы.
Грубо говоря: «ремонт квартир в москве» и «квартиры в москве» должны быть классифицированы тегами "ремонт" и "аренда" соответственно.
Теги имеются, поиск по ним тоже включён, но я говорю непосредственно о поисковой выдаче и обработке запросов. Пока не понимаю, как ваше предложение поможет в описанной ситуации.
а фасеты на основе этих тегов помогут пользователю уточнить выборку.
Фасеты — да, но я, ведь, не о них говорю. О фасетах думал, но для моих целей они, увы, не подойдут. Нужно именно какое-то исключение из выдачи некоторых материалов по определенным запросам. Ситуация, конечно, очень частная, но мне думается, что есть варианты, просто пока никак не соображу направление движения))
Напишите свой процессор для Search API. Наиболее близкий, на мой взгляд, это stopwords ( /sites/all/modules/search_api/includes/processor_stopwords.inc )
ага… спасибо, не совсем то, что я ищу, но, возможно, поможет. Буду пробовать.
А кто уже писал? Это просто да?
?