15
我正在做獅身人面像搜索,但發現了一些非常奇怪的結果。任何幫助表示讚賞。獅身人面像PHP搜索
因此,舉例來說,如果我輸入 「50」,我得到:
- 50美分
- 50獅
- 50英尺波等
這是偉大的,但當我搜索「50 Ce」時,得到:
- RycząceDwudziestki
- Spisek
- 伯恩哈德·蓋爾
- Cowabunga去,去
和其他瘋狂的結果。另外,當我搜索「50 Cent」時,正確的結果在頂部,但隨後是隨機結果。任何想法爲什麼?
PHP代碼:
$query = $_GET['query'];
if (!empty($query))
{
$sphinx->SetMatchMode(SPH_MATCH_ALL);
$sphinx->AddQuery($query, 'artists');
$sphinx->AddQuery($query, 'variations');
$sphinx->SetFilter('name', array(3));
$sphinx->SetLimits(0, 10);
$result = $sphinx->RunQueries();
echo '<pre>';
switch ($result)
{
case false:
echo 'Query failed: ' . $sphinx->GetLastError() . "\n";
break;
default:
if ($sphinx->GetLastWarning())
{
echo 'WARNING: ' . $sphinx->GetLastWarning() . "\n";
}
if (is_array($result[0]['matches']) && count($result[0]['matches']))
{
foreach ($result[0]['matches'] as $value => $info)
{
$artist = artistDetails($value);
echo $artist['name'] . "\n";
}
}
}
}
獅身人面像索引和來源:
source artists
{
type = mysql
sql_host = localhost
sql_user = user
sql_pass = pass
sql_db = db
sql_port = 3300
sql_query = \
SELECT \
id, name \
FROM artists;
#UNIX_TIMESTAMP(time)
#sql_attr_uint = group_id
#sql_attr_timestamp = time
sql_query_info = SELECT id,name FROM artists WHERE id=$id
}
index artists
{
source = artists
path = /var/sphinx/artists
docinfo = extern
charset_type = utf-8
}
單詞無法形容我的感謝:) – James 2010-03-19 15:35:14
這太棒了。我不確定這是否僅適用於較新版本的獅身人面像,但您可能根本不需要設置'enable_star = 1'。我沒有修改默認設置,我的查詢也一樣。另外,對於大多數用例(不是這個),我認爲'min_prefix_len'小於4可能是不必要的。如果任何人都可以在這裏發表評論,我將非常感激。 – 2010-09-29 06:23:50
忽略我對'min_prefix_len'的評論。對於搜索自動完成,我發現它確實奇蹟將它設置爲2. – 2010-10-07 21:05:42