2014-11-25 10 views
0

Я получаю синтаксическую ошибку по моему запросу в моем .conf-файле Все отлично работало, пока я не добавил OPTION field_weights. Что я делаю неправильно для определения моих весов?sphinx search field weights

вот запрос для моего индекса сфинкса

source tx3nh_users : src { 

    sql_query_range = SELECT MIN(id), MAX(id) FROM tx3nh_users 
    sql_query = SELECT u.id, p.fullname, p.email, s.staff_title, s.bio FROM tx3nh_users AS u LEFT JOIN tx3nh_user_attributes AS p ON u.id=p.internalKey LEFT JOIN oxv5v_su_staff AS s ON u.id=s.user_id WHERE u.id>=$start AND u.id<=$end OPTION field_weights=(p.fullname=3, s.staff_title=2, s.bio=1) 

} 

ответ

1

sql_query является SQL-запрос, который индексатор работает против вашей фактической базы данных. Поэтому он должен быть допустимым MySQL-запросом. Его intrepreted и выполняется MySQL, чтобы вернуть ваши фактические данные, которые затем индексирует превращается в индекс sphinx.

С другой стороны OPTION field_weights от sphinxQL. Таким образом, вы добавляете его в запрос SphinxQL, когда вы делаете actaul-запрос против индекса.

sphinxQL> SELECT id FROM tx3nh_users WHERE MATCH('keyword1') 
      OPTION field_weights=(p.fullname=3, s.staff_title=2, s.bio=1) 

Поскольку сво время запроса весов В параметре Арента записывается в индекс, и поэтому вы можете выбрать веса на каждый запрос основе, а не одни и те же весов для всех запросов.

+0

Огромное спасибо! Это очень четкое объяснение – user3071933

Смежные вопросы