Создайте расширенный поиск, который выполняет поиск только по полю с помощью api поиска в drupal 7


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

Это означает, что если у меня есть тип контента со следующими полями:

"запрошена работа"

"предыдущий опыт"

"город"

Мне нужна страница поиска с теми же полями, и когда пользователь вводит значение в поле "город", он ищет эти данные только в этом поле: если я ищу поле "город" для "милан", я хочу найти только узлы со словом "милан", введенным в поле "город", а не со словом "милан", введенным в тело.

Я думаю, что мне нужны отдельные индексы для каждого поля, но структурировать две формы?

 4
Author: kiamlaluno, 2011-07-05

1 answers

Вам не нужны отдельные индексы. В обработчике обратного вызова вам нужно создать новый SearchApiQueryInterface экземпляр и установите условия на поле, используя его condition метод.

$index = search_api_index_load('custom_index_machine_name');
$query = $index->query(array(
  'language' => $GLOBALS['language']->language,
  'search id' => 'custom-search',
));
foreach($form_state['values']['filters'] as $field => $value) {
  if (!empty($value)) {
    $query->condition($field, $value);
  }
}
$result = $query->execute();
 2
Author: Pierre Buyle, 2011-07-05 14:33:44