2012-10-23 72 views
3

我收到以下錯誤,而試圖在獅身人面像2.0.6通配符搜索問題獅身人面像

指數產品通配符(*)啓用搜索:語法錯誤,意想不到的$未定義附近「*」

我的搜索條件是iphone 4s*

它使用的產品索引定義如下。

index users 
{ 
    enable_star = 1 
    docinfo = extern 
    morphology = stem_en 
    charset_table = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F 
    ignore_chars = U+0021..U+002F,U+003A..U+003F,U+0060 
    charset_type = utf-8 
    html_strip = 0 

    source = gdgt_user 
    path = /var/lib/sphinxsearch/data/gdgt/users 
    min_infix_len = 3 
    min_word_len = 3 
} 

index products : users 
{ 
    enable_star = 1 
    min_infix_len = 1 
    min_word_len = 1 
    source = gdgt_products 
    path = /var/lib/sphinxsearch/data/gdgt/products 
} 

我正在使用可以在源tar中找到的php api。 使用搜索CLI時,我能夠看到錯誤。

search -c app/config/sphinx.compiled.conf -i products -e "ipho*" 
Sphinx 2.0.6-id64-release (r3473) 
Copyright (c) 2001-2012, Andrew Aksyonoff 
Copyright (c) 2008-2012, Sphinx Technologies Inc (http://sphinxsearch.com) 

using config file 'app/config/sphinx.compiled.conf'... 
index 'products': search error: . 

我的PHP代碼看起來像

$client = new SphinxClient(); 
$client->SetServer($serverIp, $serverPort); 
$client->SetMaxQueryTime(5000); 
$client->SetSortMode(SPH_SORT_RELEVANCE); 
$client->SetMatchMode(SPH_MATCH_EXTENDED); 
$res = $client->query('ipho*', 'products'); 

var_dump($res, $client->getLastError(), $client->getLastWarning()); 

回答

5

的問題是通配符是星號(*)也在您的ignore_chars(U + 002A)。

更新它:

ignore_chars = U+0021..U+0029,U+002B..U+002F,U+003A..U+003F,U+0060