San*_*cci 5 mysql full-text-search match
有可能直接在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
Run Code Online (Sandbox Code Playgroud)
如果您可以将其生成为文本文件,则可以让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');
Run Code Online (Sandbox Code Playgroud)
这是各种搜索排名的结果
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>
Run Code Online (Sandbox Code Playgroud)