0

SQL の質問で where ステートメントがどの程度一致するかのパーセンテージを取得する可能性はありますか?

PHP 関数 similar_text のようなもの ( http://php.net/manual/en/function.similar-text.php )

私の考えでは、SQL の質問で、where ステートメントが 95% 以上一致するかどうかを確認してから続行する必要があります。

これは可能ですか?はいの場合、どうすればよいですか?

編集:

表:車

id type description
1 Toyota Nice car that runs very fast and have a big engine.

次に、次の $description = '非常に速く走り、非常に大きなエンジンを搭載した非常に素晴らしい車です。' を含む文字列を取得します。

$description 文字列で既存の説明と 95% 一致する説明があるかどうか、テーブル "Car" を確認したいと思います。ない場合は、テーブルに追加する必要があります。95% 以上の一致がある場合は、テーブルに追加しないでください。

EDIT2: 私のコードは次のようになります:

$query = $this->db->query('SELECT * FROM table
                            WHERE MATCH (title)
                            AGAINST ("The test text here " IN NATURAL LANGUAGE MODE)');

$i = 1;

foreach ($query->result() as $row)
{
    echo $i . '. ';
    echo $row->title;
    echo "<br>";

    $i++;
}

上記のコードでは、最初に「最も一致する」結果が得られ、2 番目に次のような結果が得られます。今、私はこれを印刷します。出力された最初の一致でPHP関数similar_textを使用して、一致の割合を取得するソリューションを確認しました。その後、95% 以上一致するかどうかを判断して、投稿を DB に追加します。しかし、私のPHPコードではなく、代わりにSQLの質問でこれを行う方法はありますか?

4

2 に答える 2

1

あなたがする必要があるのは、全文検索を使用することです。ドキュメントはこちらです。

通常の SQL では、本当にやりたいことができません。SQL 言語には、詳細なテキスト分析をサポートするプリミティブがありません。

全文検索には 2 つのモードがあります。おそらく、自然言語バージョンが必要です。

于 2013-08-02T12:45:58.290 に答える