4

UTF8/Unicode ペルシア語/アラビア語のみでの全文検索に問題があります (クエリから何も見つかりません)。

  • テーブルはエンコード時に utf8/utf8_persian_ci で設定されます。
  • 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 言語で全文検索するにはどうすればよいですか?

4

2 に答える 2

3

インデックス付きの列は、1000 バイト以下のエンコードである必要があります。

1000 バイトを超えるエンコーディングがあるため、ペルシャ文字で FULLTEXT 検索を実行することはできません。ここに 記載され て い ます.

たとえばآزمایشی、次の文字エンコーディング バイト マップがあります。

Array
(
    [0] => 1570
    [1] => 1586
    [2] => 1605
    [3] => 1575
    [4] => 1740
    [5] => 1588
    [6] => 1740
)
于 2012-08-22T13:34:46.007 に答える