Problem: Ich muss meine eigenen Suchvorgänge programmgesteuert mit der Such-API ausführen. Jedes Google-Ergebnis, das ich finde, ist darauf ausgerichtet, Nicht-Entwicklern die Verwendung des Moduls mit Views beizubringen.
Information:
- Verwendung eines lokalen Datenbankdienstes anstelle von Solr oder eines anderen.
- Haben Sie Daten nicht in der Datenbank gespeichert, die neben anderen Ergebnissen angezeigt werden.
- Der Inhalt wird in "Typ" -Registern gruppiert.
- Ansichten werden aus verschiedenen Gründen nicht verwendet.
- Haben Sie die Facetten-API aktiviert, aber keine Ahnung, wie Sie sie verwenden sollen.
Warum: Weil ich die Suchseite unter / site-search und ohne / node / keyword nach dem Seitenargument haben möchte. Außerdem werden Sie gebeten, dies außerhalb des Bereichs anderer Module anzupassen, die möglicherweise dieselbe Art von Funktionalität bereitstellen. Und ich möchte lernen, wie man das macht, habe aber noch keine Tutorials oder andere Einsichten gefunden, wie man das macht.
Der Rest: Ich habe meine Suchseite erstellt und führe daraufhin die Suche durch mit:
$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);
Die Sitzungsvariable wird festgelegt, wenn ein Suchformular gesendet wird. Anschließend wird der Benutzer zu / site-search umgeleitet, um die Suche durchzuführen und die Ergebnisse anzuzeigen.
Wenn ich $ result ausgebe, sehe ich, dass es sich um ein Array mit unterschiedlichen Informationen handelt, einschließlich einer Ergebnismenge, die ein Array von Knoten-IDs und deren Punktzahlen ist.
Ich könnte diese durchgehen, den Knoten greifen und die Ergebnisse selbst anzeigen, aber ich glaube, es muss eine andere Methode geben, um die Ergebnisse der Suche wiederzugeben. Ich habe es aber nicht gefunden und das ist das Problem.
Ich habe die verschiedenen Klassen in der Such-API und der Facetten-API durchgesehen und kann in ihnen nichts finden, was den Anschein hat, als würden sie eine Ergebnisausgabe erstellen.
Jede Hilfe dabei wird geschätzt.
Ergebnisbeispiel:
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
)
)
Antworten:
Haben Sie die gesuchte Search API - Seiten - Modul . Es verwendet das Such-API-Modul und erstellt eine benutzerdefinierte Suchseite. In diesem Modul könnten Sie wahrscheinlich nach Hinweisen suchen, wie Sie das implementieren, was Sie tun möchten. Das Modul selbst bietet möglicherweise sogar viele Funktionen, nach denen Sie suchen.
quelle
Hier ist meine Lösung in ungefähr 100 Zeilen - ein bisschen einfacher als Seiten ...
quelle