Ich versuche, mehrere MySQL-Tabellen mit verschiedenen Feldern mit Sphinx zu durchsuchen und alle Ergebnisse in einem einzigen Satz basierend auf Relevanz zu kombinieren.Sphinx Suche mehrere Tabellen und aggregierte Ergebnisse mit PHP API
Ich habe Sphinx mit einem Index für jede Tabelle konfiguriert und bin erfolgreich die Ergebnisse durch die Suche nach allen Indizes auf einmal.
Wenn ich abfragen mit SEARCH
durch die Shell bekomme ich alle Ergebnisinformationen zurück wie erwartet. Wenn ich jedoch die PHP-API verwende, kommt das Ergebnis nur mit den IDs der Zeilen zurück und daher kann ich nicht feststellen, aus welcher Tabelle es stammt.
Gibt es eine Möglichkeit, die PHP-API dazu zu bringen, mir zu sagen, aus welcher Tabelle/welchem Index sie stammt, damit ich nach den tatsächlichen Daten suchen kann?
Die Alternative, die ich betrachte, versucht, die Ausgabe von der Shell-Skript zu verarbeiten, aber das scheint chaotisch.
Hier ist das PHP: $ search = $ _GET ['query']; // Verbindungsinformationen $ sphinxClient = new SphinxClient(); $ sphinxClient-> SetServer ('localhost', 9312); $ sphinxClient-> SetMaxQueryTime (5000);
//Sphinx Result Configuration
$sphinxClient->SetMatchMode(SPH_MATCH_ANY);
$sphinxClient->SetRankingMode(SPH_RANK_PROXIMITY_BM25);
$sphinxClient->SetLimits(0, 20);
// Give me back the results as an array
$sphinxClient->SetArrayResult(true);
$searchResults = $sphinxClient->Query($search, 'user model');
Die Shell-Skript ist einfach:
./search SEARCHTERM
wo SUCHBEGRIFF der
, die etwas suchen ist ausgibt, das wie folgt aussieht:
Sphinx 2.0.3 -Release (r3043) Copyright (c) 2001-2011, Andrew Aksyonoff Urheberrecht (c) 2008-2011, Sphinx Technologies Inc. (http://sphinxsearch.com)
mit der Konfigurationsdatei '/ usr/local/sphinx/etc/sphinx conf '... Index 'user': query' NEWTON ‚: ergab 10 Treffer von 10 gesamt in 0.000 sec
Anzeige Spiele: 1. Dokument = 1, Gewicht = 2629, Zeit = Do 1. Januar 00 : 33: 32 1970 id = 1 first_name = Joe last_name = Shmo company = Acme
Der PHP-API Output im JSON-Format: { "Fehler": "", "Warnung": "", "Status": "gut", "Felder": [ "Name", "CODE_NAME" , "code", "beschreibung", "rating", "angle", "publicated", "key_words", "referred_num", "genehmigt", "used_num", "avg_runtime", "beispiele", "editor" publiced_time "], " attrs ": {" time ": 2}, " Übereinstimmungen ": { {" id ": 1," Gewicht ":" 1 "," attrs ": {" time ": 2012 }} ], "gesamt": "1", "total_found": "1", "zeit": "0.000" , "Worte": { "posuere": { "docs": "1", "Hits": "2"}} }
Bitte fügen Sie den Code verwenden können, wo Sie die PHP-API-Suche durchführen, so ist es klarer, wie du das machst. Bitte dokumentieren Sie die Shell-Befehlszeile, die Sie ausführen, damit sie miteinander verglichen werden können. – hakre
./search shell script wurde nicht für den produktiven Einsatz entwickelt. Es ist ein Tool zum Debuggen und Überwachen von Status und Inhalt der Indizes. Sie sollten stattdessen Sphinx API verwenden. –