Проблема: Нужно запускать мой собственный поиск программно с помощью API поиска. Каждый результат Google, который я нахожу, направлен на то, чтобы научить тех, кто не занимается разработкой, использовать модуль с представлениями, но без результатов, как я хочу.
Информация:
- Использование сервиса локальной базы данных вместо Solr или любого другого.
- Не храните данные в базе данных, которые будут отображаться вместе с другими результатами.
- Содержимое будет сгруппировано во вкладках типа.
- Не использует представления по разным причинам.
- Включите Facets API, но не знаете, как его использовать.
Почему: потому что я хочу, чтобы страница поиска находилась в / site-search и без / node / keyword после аргумента страницы. Также будет предложено настроить это за рамками других модулей, которые могут предоставлять такой же тип функциональности. И я хочу узнать, как это сделать, но не нашел никаких руководств или другого понимания того, как это сделать.
Остальное: я создал свою страницу поиска и на ней я выполняю поиск с помощью:
$term = $_SESSION['my-search']['term'];
$server = search_api_server_load('database');
$index = search_api_index_load('default_node_index');
$query = new SearchApiQuery($index);
$query->keys($term);
$query->fields(array('title','body:value'));
$srv= new SearchApiDbService($server);
$result = $srv->search($query);
Переменная сеанса устанавливается при отправке формы поиска, а затем перенаправляет пользователя в / site-search для выполнения поиска и отображения результатов.
Если я выведу $ result, я вижу, что это массив с другой информацией, включая набор результатов, который представляет собой массив идентификаторов узлов и их оценок.
Я мог бы пробежаться по ним, захватить узел и отобразить результаты самостоятельно, но я думаю, что должен быть какой-то другой метод для рендеринга результатов поиска. Я не нашел это, хотя и в этом проблема.
Я просматривал различные классы в Search API и Facet API и не могу найти в них ничего, что могло бы вывести результаты.
Любая помощь с этим будет оценена.
Пример результатов:
Array
(
[result count] => 11
[results] => Array
(
[37] => Array
(
[id] => 37
[score] => 15.7503318786621
)
[39] => Array
(
[id] => 39
[score] => 7
)
[40] => Array
(
[id] => 40
[score] => 5
)
[31] => Array
(
[id] => 31
[score] => 4
)
[33] => Array
(
[id] => 33
[score] => 1
)
[36] => Array
(
[id] => 36
[score] => 1
)
[1] => Array
(
[id] => 1
[score] => 1
)
[15] => Array
(
[id] => 15
[score] => 1
)
[16] => Array
(
[id] => 16
[score] => 1
)
[27] => Array
(
[id] => 27
[score] => 1
)
[35] => Array
(
[id] => 35
[score] => 0.980873763561249
)
)
[warnings] => Array
(
)
[ignored] => Array
(
)
[performance] => Array
(
[complete] => 0.0033111572265625
[preprocessing] => 0.00053095817565918
[execution] => 0.0027379989624023
[postprocessing] => 4.2200088500977E-5
)
)
Ответы:
Вы смотрели на модуль поиска страниц API . Он использует модуль API поиска и создает пользовательскую страницу поиска. Вы могли бы, вероятно, взглянуть на этот модуль, чтобы понять, как реализовать то, что вы пытаетесь сделать. Сам модуль может даже предоставить множество функций, которые вы ищете.
источник
Вот мое решение в 100 строк - немного проще, чем страницы ...
источник