Наставте на путь верный))
У меня есть перечень магазинов это(Ноды), есть каталог техники которую он продает(Таксономия).
Телефония и связь
-кпк и коммуникаторы
--Acer
--3Q
-мобильные телефоны
--BBK
--Beeline
и т.д.
Так как того и другого будет много, поиск делаю с помощью Apache Solr.
Поиск должен быть по таксономии в виде инпута с автодополнением.
Решил добавить к каждой ноде кастомное поле куда передаю все термины к которым относится магазин.
<?php**
* Implements hook_entity_property_info_alter().
*/
function example_search_api_property_entity_property_info_alter(&$info) {
$info['node']['properties']['test_multiple_field'] = array(
'type' => 'list<text>',
'label' => t('Test multiple text'),
'sanitized' => TRUE,
'getter callback' => 'example_search_api_property_random_text_getter_callback',
);
}
/**
* Getter callback for multiple field.
*/
function example_search_api_property_random_text_getter_callback($item) {
$strings = array('телефон BBK', 'кпк коммуникатор acer', 'телефон Beeline', 'кпк коммуникатор 3Q');
$number = rand(1, 5);
$values = array();
while ($number > 0) {
$values[] = $strings[rand(0, 4)];
$number--;
}
return $values;
}?>
Делаю для поля тип Fulltext и делаю поиск понему.
Но поиск ищет по всем словам тоесть если я введу(телефон acer), он найдет магазин который относится к "телеофн BBK" и "кпк коммуникатор acer".
Так вот можно ли сделать чтобы поиск производился как по словам если я введу просто(телефон), так и по словосочитаниям(телефон BBK)?
Комментарии
если делаете через вьюсы то для этого есть соответствующая настройка у поискового фильтра
Настройки там есть но, работает так же. Потому что я для этого поля включаю тип fulltext и получается что все словосочитания розбиваются на просто слова и поиск производится именно по словам, а не словосочитаниям.
Возможно, вы включили токенайзер в настройках индекса или перестарались с настройками самого солра. Настройка фильтра вьюса Оператор - Contains all of these words должна работать.