Создайте расширенный поиск, который выполняет поиск только по полю с помощью api поиска в drupal 7
Я успешно установил модуль api поиска в drupal 7. Я установил солнечную батарею, и она отлично работает. Мне нужно создать пользовательскую форму поиска, содержащую различные поля, и эти поля выполняют поиск только в соответствующем поле.
Это означает, что если у меня есть тип контента со следующими полями:
"запрошена работа"
"предыдущий опыт"
"город"
Мне нужна страница поиска с теми же полями, и когда пользователь вводит значение в поле "город", он ищет эти данные только в этом поле: если я ищу поле "город" для "милан", я хочу найти только узлы со словом "милан", введенным в поле "город", а не со словом "милан", введенным в тело.
Я думаю, что мне нужны отдельные индексы для каждого поля, но структурировать две формы?
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();