bemulima
@bemulima
ФуллСтекРазработчик

Как индексировать одна ко многим таблиц на sphinx?

Есть таблица одна ко многим parent и child.
parent
- id
- name
- age

child
- id
- parent_id
- name
- age


если в конфиге source написать:

source mainSourse
{
	sql_query = \
        SELECT row_number() OVER () AS id, p.id as parent_id, p."name" as parent_name, \
        p.age as parent_age, ch.id as child_id, ch.name as child_name, ch.age as child_age\
        FROM parent p\
        JOIN child ch ON ch.parent_id=p.id\

        sql_field_string = parent_name
        sql_field_string = child_name
        sql_attr_uint = parent_age
        sql_attr_uint = child_age
}


то если у одного родителя более одного детей то в sphinx отобразить их так:

| id | parent_id | parent_name | parent_age | child_id | child_name | child_age |
|  1 |              1|                    a |                 35|            1|                aa|               2|
|  2 |              1|                    a |                 35|            2|                ab|               3|
|  3 |              1|                    a |                 35|            3|                ac|               4|
|  4 |              1|                    a |                 35|            4|                ad|               5|


т.е. данные родителя повторяются этим самым занимает место на диске. При поиске по имени родителя если у родителя больше одного ребенка то количество родителя равен к количестве детей. А при поиске по имени ребенка нормально, одна запись. Подскажите как правильно индексировать подобные данные или так и должно быть?
  • Вопрос задан
  • 34 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы