За последние 24 часа нас посетили 30747 программистов и 1480 роботов. Сейчас ищут 913 программистов ...

Построение индекса sphinx, отношение many_many

Тема в разделе "Прочие вопросы по PHP", создана пользователем shreck, 15 май 2012.

  1. shreck

    shreck Активный пользователь

    С нами с:
    7 авг 2007
    Сообщения:
    479
    Симпатии:
    0
    Адрес:
    Россия, Саратов
    Коллеги, приветствую.

    Есть проблема с построением индекса sphinx.
    Имеем в распоряжении: 3 таблицы, sphinx, руки (видно, не совсем прямые)
    Есть задача: организовать поиск объектов по дополнительным параметрам

    Структура таблиц:
    Код (Text):
    1.  
    2. apartment { // табличка с объектами
    3.     id:int,
    4.     name:string
    5. }
    6.  
    7. attributes { // табличка с дополнительными параметрами
    8.     id:int,
    9.     name:string
    10. }
    11.  
    12. apartment_attributes { // связка объектов с параметрами и значения этих параметров по которым и нужно искать
    13.     apartment_id:int,
    14.     attribute_id:int,
    15.     value:string
    16. }
    Мои тщетные попытки сделать это:
    Код (Text):
    1.  
    2. source apartment_core_0
    3. {
    4.     type          = mysql
    5.     sql_host      = localhost
    6.     sql_user      = root
    7.     sql_pass      = root
    8.     sql_db        = db
    9.     sql_query_pre = SET NAMES utf8
    10.     sql_query = SELECT * FROM apartment
    11.  
    12.     sql_attr_multi = uint attribute_id from query; SELECT apartment_id, attribute_id FROM apartment_attribute
    13.     sql_query_info = SELECT * FROM apartment WHERE id=$id
    14. }
     
  2. shreck

    shreck Активный пользователь

    С нами с:
    7 авг 2007
    Сообщения:
    479
    Симпатии:
    0
    Адрес:
    Россия, Саратов
    Ответ был как всегда очевиден:
    Строится индекс по таблице apartment_attribute

    sphinx.conf
    Код (Text):
    1.  
    2. sql_attr_uint = apartment_id
    3. sql_attr_uint = attribute_id
    Код (Text):
    1.  
    2. localhost$ search -i apartment_core -f <attribute_id> <search_value>
    Вот и все :)