Problem: Muszę programowo uruchamiać własne wyszukiwania za pomocą Search API. Każdy wynik w Google, który znalazłem, ma na celu nauczenie osób, które nie są programistami, jak korzystać z modułu w Widoku, bez żadnych rezultatów w robieniu tego, co chcę.
Informacja:
- Korzystanie z lokalnej usługi bazy danych zamiast Solr lub innej.
- Nie przechowuj danych w bazie danych, które pojawią się obok innych wyników.
- Treść zostanie zgrupowana w zakładkach „typ”.
- Nie używam widoków z różnych powodów.
- Włącz interfejs Facets API, ale nie mam pojęcia, jak go używać.
Dlaczego: Ponieważ chcę, aby strona wyszukiwania znajdowała się w / site-search i bez / node / słowa kluczowego po argumencie strony. Zostanie również poproszony o dostosowanie tego poza zakresem innych modułów, które mogą zapewniać ten sam typ funkcjonalności. Chcę się nauczyć, jak to zrobić, ale nie znalazłem żadnych samouczków ani innych informacji na temat tego, jak to zrobić.
Reszta: utworzyłem swoją stronę wyszukiwania i na niej wykonuję wyszukiwanie za pomocą:
$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);
Zmienna sesji jest ustawiana po przesłaniu formularza wyszukiwania, a następnie przekierowuje użytkownika do / site-search, aby przeprowadzić wyszukiwanie i wyświetlić wyniki.
Jeśli wypiszę $ $ wynik, widzę, że jest to tablica z różnymi informacjami, w tym zestaw wyników, który jest tablicą identyfikatorów węzłów i ich wyników.
Mógłbym je przeglądać, chwytać węzeł i wyświetlać wyniki samodzielnie, ale sądzę, że musi być inna metoda renderowania wyników wyszukiwania. Nie znalazłem tego i to jest problem.
Przeglądałem różne klasy w Search API i Facet API i nie mogę znaleźć w nich niczego, co mogłoby wyglądać na wynikowe.
Każda pomoc w tym zakresie będzie mile widziana.
Przykład wyników:
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
)
)
Odpowiedzi:
Czy przeglądałeś moduł stron interfejsu API wyszukiwania . Korzysta z modułu Search API i tworzy niestandardową stronę wyszukiwania. Prawdopodobnie możesz spojrzeć na ten moduł, aby uzyskać wskazówki, jak wdrożyć to, co próbujesz zrobić. Sam moduł może nawet zapewniać wiele funkcji, których szukasz.
źródło
Oto moje rozwiązanie w około 100 liniach - trochę prostsze niż strony ...
źródło