我在UTF8 / Unicode波斯语/阿拉伯语言上遇到全文搜索问题(从查询中找不到任何内容)。
mysql_query("SET NAMES 'UTF8'");
进行Unicode查询。以下是我的搜索代码:
<?php
mysql_connect("localhost", "user", "password");
mysql_select_db("search");
mysql_query("SET NAMES 'UTF8'");
$q = $_GET['q'];
?>
<form action="<?php $_SERVER['PHP_SELF']; ?>">
<input type="text" name="q" value="<?php echo $q; ?>">
<input type="submit" value="Search!">
</form>
<hr>
<?php
if (isset($q))
{
$res = mysql_query("SELECT *, MATCH(name, description) AGAINST ('$q') AS score from search_test WHERE MATCH (name, description) AGAINST('$q') order by score desc");
$ant = mysql_num_rows($res);
if ($ant > 0)
{ // query provided results – display results
echo ("<br/><h2>Search results for \"$q\":</h2>");
while ($result = mysql_fetch_array($res))
{
echo ("<h3>{$result['name']} ({$result['score']})</h3>{$result['description']}<br/><br/>");
}
}
else
{ // query provided 0 results – display 0 hit message
echo ("<br/><h2>Nothing Found \"$q\" query</h2>");
}
}
?>
问题在哪里或如何使用Unicode语言全文进行搜索?
答案 0 :(得分:3)
索引列必须&lt; = 1000字节编码。
你不能对波斯语字母进行FULLTEXT搜索,因为有&gt; 1000字节编码。正如here所述。
例如,您的آزمایشی
具有以下字符编码字节映射:
Array
(
[0] => 1570
[1] => 1586
[2] => 1605
[3] => 1575
[4] => 1740
[5] => 1588
[6] => 1740
)
答案 1 :(得分:1)
MySQL全文搜索适用于波斯语。只需在需要的地方确认以下内容:
COLLATION = utf8_persian_ci
&amp; CHARACTER SET = utf8
。 (数据库,表和列)。ft_min_word_len = 3
(请参阅show variables like "ft_%";
)