2013-07-14 5 views
0

Я пытаюсь получить результаты от sphinx по attr_string. Вот сфинкс конфигурация:сфинкс и многоязычный поиск || поиск по атрибуту

source db 
{- 
    type   = mysql 
    sql_query  = \ 
     SELECT id,language,text,page_url \ 
     FROM content 
    sql_attr_string     = language 
    sql_attr_string     = page_url 

} 
index content 
{ 
    source   = db 
    charset_type = utf-8 
    min_word_len = 3 
} 

Результаты, которые я получаю, как это:

[matches] => Array 
     (
      [106] => Array 
       (
        [weight] => 4 
        [attrs] => Array 
         (
          [page_url] => en/example.gtml 
          [language] => en 
         ) 

       ) 

То, что я хочу сделать, это фильтровать все результаты на «язык» = ан. $ sphinx->SetFilter() работает целыми числами, где в этом случае мне понадобится только строка «en». Любая помощь приветствуется!

ответ

0

Я нашел решение ... Если кому-то это нужно.

Настройка "источник" для использования crc32, Ex:

source db 
{ 
    type   = mysql 
    sql_query  = \ 
     SELECT id,crc32(language) as language,text,page_url \ 
     FROM content 
    sql_attr_uint     = language 
    sql_attr_string     = page_url 
} 

И в клиенте изменить метод SetFilter использовать crc32(). например:

$s->SetFilter('language',array(crc32('en'))); 
$result = $s->query('bird is a word','content'); 

Я надеюсь, что это помогает кому-то ...

больше информации: http://sphinxsearch.com/docs/current.html#attributes

+0

Вы должны принять свой собственный ответ. Вы не получите никаких очков (и не будете наказаны!), Но он отмечает поток как ответ. – barryhunter

+0

Ах, не знал этого. Извините за то, что вы сомневались! – barryhunter

+0

Фактически я собираюсь удалить это ... Я не рад этому обходному пути: S – confiq

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