是否可以直接在mysql查询中?例子:
以布尔模式搜索+possible +know
“我想知道这怎么可能” => 2 场比赛
“一切皆有可能” => 1 场比赛
是否可以直接在mysql查询中?例子:
以布尔模式搜索+possible +know
“我想知道这怎么可能” => 2 场比赛
“一切皆有可能” => 1 场比赛
我有一个奇怪的建议
您可能需要使用名为myisam_ftdump的 mysql 实用程序
这是我原始答案中示例的 FULLTEXT 转储
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 将其解析为您要查找的单词。
有或没有 BOOLEAN MODE,答案是否定的。
但是,您可以根据单词出现和整体字符串长度显示排名,如下所示:
样本数据
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>