5

mysqlクエリで直接可能ですか? 例:

ブールモードで検索+possible +know

「どうしてこんなことができるのか知りたい」 => 2 試合

「すべてが可能」 => 1 試合

4

1 に答える 1

5

更新元の回答を下に移動しました

奇妙な提案があります

myisam_ftdumpというmysqlユーティリティを使用する必要がある場合があります

これが私の元の回答のサンプルからのフルテキストダンプです

C:\MySQL_5.5.12\data\sandro>myisam_ftdump -vc txtdata 1
        2            0.4054651 everyhing
        2            0.4054651 impossible
        1            1.3862944 knew
        3           -0.4054651 know
        2            0.4054651 nothing
        1            1.3862944 people
        2            0.4054651 possible
        1            1.3862944 probable
        1            1.3862944 something

これをテキストファイルとして生成できる場合は、PHPに、探している単語を解析させることができます。

元の回答

ブールモードの有無にかかわらず、答えはノーです。

ただし、次のように、単語の出現と文字列全体の長さに基づいてランキングを表示できます。

サンプルデータ

DROP DATABASE sandro;
CREATE DATABASE sandro;
use sandro
CREATE TABLE txtdata
(
    id int not null auto_increment,
    txt VARCHAR(255),
    primary key (id),
    FULLTEXT (txt)
) ENGINE=MyISAM;
INSERT INTO txtdata (txt) VALUES
('I know Nothing is possible'),
('We know nothing is impossible'),
('I knew everyhing is possible'),
('We know everyhing is possible'),
('For may people something is probable');

さまざまな検索ランキングの結果は次のとおりです

mysql> SELECT *,MATCH(txt) AGAINST ('possible knew') as score FROM txtdata;
+----+--------------------------------------+--------------------+
| id | txt                                  | score              |
+----+--------------------------------------+--------------------+
|  1 | I know Nothing is possible           | 0.3919430673122406 |
|  2 | We know nothing is impossible        |                  0 |
|  3 | I knew everyhing is possible         |   1.73200523853302 |
|  4 | We know everyhing is impossible      |                  0 |
|  5 | For may people something is probable |                  0 |
+----+--------------------------------------+--------------------+
5 rows in set (0.00 sec)

mysql> SELECT *,MATCH(txt) AGAINST ('possible know') as score FROM txtdata;
+----+--------------------------------------+--------------------+
| id | txt                                  | score              |
+----+--------------------------------------+--------------------+
|  1 | I know Nothing is possible           | 0.3919430673122406 |
|  2 | We know nothing is impossible        |                  0 |
|  3 | I knew everyhing is possible         | 0.3919430673122406 |
|  4 | We know everyhing is impossible      |                  0 |
|  5 | For may people something is probable |                  0 |
+----+--------------------------------------+--------------------+
5 rows in set (0.00 sec)

mysql> SELECT *,MATCH(txt) AGAINST ('impossible knew') as score FROM txtdata;
+----+--------------------------------------+--------------------+
| id | txt                                  | score              |
+----+--------------------------------------+--------------------+
|  1 | I know Nothing is possible           |                  0 |
|  2 | We know nothing is impossible        | 0.3919430673122406 |
|  3 | I knew everyhing is possible         |  1.340062141418457 |
|  4 | We know everyhing is impossible      | 0.3919430673122406 |
|  5 | For may people something is probable |                  0 |
+----+--------------------------------------+--------------------+
5 rows in set (0.00 sec)

mysql> SELECT *,MATCH(txt) AGAINST ('impossible know') as score FROM txtdata;
+----+--------------------------------------+--------------------+
| id | txt                                  | score              |
+----+--------------------------------------+--------------------+
|  1 | I know Nothing is possible           |                  0 |
|  2 | We know nothing is impossible        | 0.3919430673122406 |
|  3 | I knew everyhing is possible         |                  0 |
|  4 | We know everyhing is impossible      | 0.3919430673122406 |
|  5 | For may people something is probable |                  0 |
+----+--------------------------------------+--------------------+
5 rows in set (0.00 sec)

mysql>
于 2012-04-06T17:39:18.787 に答える