Настройка кастомного поля для Search api solr

Главные вкладки

Аватар пользователя Артём Мирошниченко Артём Мирошниченко 8 сентября 2014 в 13:17

Наставте на путь верный))

У меня есть перечень магазинов это(Ноды), есть каталог техники которую он продает(Таксономия).

Телефония и связь
-кпк и коммуникаторы
--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)?

Комментарии

Аватар пользователя Артём Мирошниченко Артём Мирошниченко 8 сентября 2014 в 15:10

Настройки там есть но, работает так же. Потому что я для этого поля включаю тип fulltext и получается что все словосочитания розбиваются на просто слова и поиск производится именно по словам, а не словосочитаниям.

Аватар пользователя vermix1 vermix1 8 сентября 2014 в 22:17

Возможно, вы включили токенайзер в настройках индекса или перестарались с настройками самого солра. Настройка фильтра вьюса Оператор - Contains all of these words должна работать.