Если у вас есть это в MySQL:
mysql> select * from users; select * from friends;
+------+-------+
| id | name |
+------+-------+
| 1 | Tom |
| 2 | Dick |
| 3 | Harry |
| 4 | Jane |
+------+-------+
4 rows in set (0.00 sec)
+------+--------+--------+
| id | user_a | user_b |
+------+--------+--------+
| 1 | 1 | 2 |
| 2 | 1 | 3 |
| 3 | 2 | 3 |
| 4 | 4 | 3 |
+------+--------+--------+
4 rows in set (0.00 sec)
Вы можете добавить следующее к вашему источнику:
sql_query_pre = set @id=0;
sql_query = select (@id:=@id+1) id, u.name user, (if(u.id=user_a,u3.name,if(u.id=user_b,u2.name,''))) friend from users u left join friends f on f.user_a = u.id or f.user_b = u.id left join users u2 on f.user_a = u2.id left join users u3 on f.user_b = u3.id
sql_field_string = friend
, что даст вам это:
mysql> set @id=0;select (@id:=@id+1) id, u.name user, (if(u.id=user_a,u3.name,if(u.id=user_b,u2.name,''))) friend from users u left join friends f on f.user_a = u.id or f.user_b = u.id left join users u2 on f.user_a = u2.id left join users u3 on f.user_b = u3.id;
Query OK, 0 rows affected (0.00 sec)
+------+-------+--------+
| id | user | friend |
+------+-------+--------+
| 1 | Tom | Dick |
| 2 | Tom | Harry |
| 3 | Dick | Tom |
| 4 | Dick | Harry |
| 5 | Harry | Tom |
| 6 | Harry | Dick |
| 7 | Harry | Jane |
| 8 | Jane | Harry |
+------+-------+--------+
8 rows in set (0.00 sec)
Вот как это будет работать в Sphinx:
mysql> select friend from company where match('@user tom @friend di*');
+--------+
| friend |
+--------+
| Dick |
+--------+
1 row in set (0.00 sec)
mysql> select friend from company where match('@user tom @friend ha*');
+--------+
| friend |
+--------+
| Harry |
+--------+
1 row in set (0.00 sec)
mysql> select friend from company where match('@user tom @friend ja*');
Empty set (0.00 sec)
mysql> select friend from company where match('@user harry @friend ja*');
+--------+
| friend |
+--------+
| Jane |
+--------+
1 row in set (0.00 sec)
Вас также может заинтересовать CALL SUGGEST / CALL QSUGGEST. Вот интерактивный курс по этому вопросу - https://play.manticoresearch.com/simpleautocomplete/