2017-02-18 1 views
0

Anstatt die Standardsortierung in sphinx, würde ich gerne sortieren/Gewicht Ergebnisse basierend auf einem Feld in einer anderen Tabelle. Mein Schema sieht wie folgt aus:Verwenden Sie andere Tabelle Spalte für Sphinx Suche Gewicht Sortierung

node { 
    id 
    weight 
} 

node_text { 
    id 
    node_id 
    text 
} 

(Hinweis: Es gibt nur einen node_text für jeden Knoten ist)

ich indizieren möchten node_text, aber in der Lage von node.weight bestellt Sphinx Ergebnisse zurückzukehren. Ich gehe davon aus ich so etwas wie dies benötigen:

sql_query = SELECT node_id, text from node_text 

sql_joined_field = weight from query; SELECT id, weight FROM node ORDER BY id ASC 

Ist dies der richtige Weg für die Spiele suchen ORDER BY node.weight DESC? Ich möchte in der Lage sein, eine Abfrage wie folgt auszuführen:

mysql> SELECT * FROM nodetest1 WHERE MATCH('foobar') ORDER BY weight DESC; SHOW META; 

Antwort

1

sql_joined_field, macht ein Feld, müssen Sie weight in einem Attribut gespeichert werden. Einfachste wäre eine einfache beitreten ...

sql_query = select node_id, text, weight from node_text inner join node using (node_id=node.id) 
sql_uint_attr = weight 

die dann für Sie SphinxQL Abfrage sollte funktionieren :)

Verwandte Themen