Sphinxsearch无法与阿拉伯语单词匹配

时间:2016-03-28 15:10:31

标签: mysql unicode sphinx arabic string-matching

我有sphinxsearch并使用实时索引,这是我的rt table配置

mc_offers{

        type                    = rt
        path                    = /var/lib/sphinxsearch/mc_offers
        rt_mem_limit            = 16M

        rt_field                =       title

        rt_attr_string          =       title

        min_word_len    =       1
        min_infix_len   =       1
        enable_star     =       1
        dict            =       keywords

        charset_type    = utf-8
        charset_table =         0..9, A..Z->a..z, _, !, /, +, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F,\
                                   U+0531..U+0556->U+0561..U+0586, U+0561..U+0586, U+0587, U+2116,\
                                U+0626,U+0627..U+063A,U+0641..U+064A,U+0679,U+067E,U+0686,U+0688,U+0691,U+0698,U+06AF,U+06BA, U+06BB,U+0660..U+0669→0..9,U+06F0..U+06F9→0..9, U+0622→U+0627, U+0623→U+0627, U+0625→U+0627, U+0671→U+0627, U+0672→U+0627, U+0673→U+0627, U+0675→U+0627, U+066E→U+0628, U+067B→U+0628, U+0680→U+0628, U+06C0→U+0629, U+06C1→U+0629, U+06C2→U+0629, U+06C3→U+0629, U+067A→U+062A, U+067B→U+062A, U+067C→U+062A, U+067D→U+062A, U+067F→U+062A, U+0680→U+062A, U+0681→U+062D, U+0682→U+062D, U+0683→U+062D, U+0684→U+062D, U+0685→U+062D, U+0687→U+0686, U+06BF→U+0686, U+0689→U+062F, U+068A→U+062F, U+068C→U+062F, U+068D→U+062F, U+068E→U+062F, U+068F→U+062F, U+0690→U+062F, U+06EE→U+062F, U+068B→U+0688, U+0692→U+0631, U+0693→U+0631, U+0694→U+0631, U+0695→U+0631, U+0696→U+0631, U+0697→U+0631, U+0699→U+0631, U+06EF→U+0631, U+069A→U+0633, U+069B→U+0633, U+069C→U+0633, U+06FA→U+0633, U+069D→U+0635, U+069E→U+0635, U+06FB→U+0635, U+069F→U+0637, U+06A0→U+0639, U+06FC→U+0639, U+06A1→U+0641, U+06A2→U+0641, U+06A3→U+0641, U+06A4→U+0641, U+06A5→U+0641, U+06A6→U+0641, U+066F→U+0642, U+06A7→U+0642, U+06A8→U+0642, U+063B→U+0643, U+063C→U+0643, U+06A9→U+0643, U+06AA→U+0643, U+06AB→U+0643, U+06AC→U+0643, U+06AD→U+0643, U+06AE→U+0643, U+06B0→U+06AF, U+06B1→U+06AF, U+06B2→U+06AF, U+06B3→U+06AF, U+06B4→U+06AF, U+06B5→U+0644, U+06B6→U+0644, U+06B7→U+0644, U+06B8→U+0644, U+06FE→U+0645, U+06B9→U+0646, U+06BC→U+0646, U+06BD→U+0646, U+06BE→U+0647, U+06C0→U+0647, U+06C1→U+0647, U+06C2→U+0647, U+06C3→U+0647, U+06D5→U+0647, U+06FF→U+0647, U+06C4→U+0648, U+06C5→U+0648, U+06C6→U+0648, U+06C7→U+0648, U+06C8→U+0648, U+06C9→U+0648, U+06CA→U+0648, U+06CB→U+0648, U+06CF→U+0648, U+063D→U+064A, U+063E→U+064A, U+063F→U+064A, U+06CC→U+064A, U+06CD→U+064A, U+06CE→U+064A, U+06D0→U+064A, U+06D1→U+064A, U+06D2→U+064A, U+06D3→U+064A

        docinfo = extern
        morphology = none
         ignore_chars=U+0640,U+064B..U+065F,U+06D6..U+06DC,U+06DF..U+06E8,U+06EA..U+06ED
}

我有这样的行

| id   | weight | partner_offer_id | section_id | location_id | place_id|price_aed | price_usd | label_id | lat       | lng       | end_date   |title | description    | short_description | tags | type    | owner_type |sub_section | user_residency   | available_lng_id |

|  405 |      1 |                0 |          1 |           1 |        0 |       123 |        19 |        0 | 25.269428 | 55.279106 | 1893441600 | test offer asd քաք    | nknkn انضم     | knkjnk انضم       |      | regular | partner    | 4           | visitor resident | 1 8              |

包含阿拉伯语和亚美尼亚语。

arabic - انضم
亚美尼亚语 - քաք

当我运行此查询时,它可以正常工作

SELECT id, sub_section, WEIGHT() as relevance FROM mc_offers WHERE MATCH('(քաք*)');

返回结果

但是当我运行相同的查询以匹配阿拉伯语时,它返回空结果

SELECT id, sub_section, WEIGHT() as relevance FROM mc_offers WHERE MATCH('(انضم*)');
Empty set (0.00 sec)

1 个答案:

答案 0 :(得分:0)

您是否尝试使用源配置添加sql_query_pre = SET NAMES utf8