2012-04-06 5 views

ответ

5

UPDATE Я переехал мой первоначальный ответ вниз

у меня есть странное предположение,

Вам может понадобиться использовать м ysql утилиты под названием myisam_ftdump

Вот полнотекстовой дамп из образца в моем оригинальном ответе

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, ответ нет.

Однако, вы можете показать рейтинг, основанный на появлении слов и общей длины строки следующим образом:

SAMPLE DATA

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> 
+0

в проблема в том, что оценка должна быть нормирована, и для меня это кажется невозможным, потому что это зависит от количества строк и других факторов, полностью динамических. Полагаю, мне нужно делать то, что я хочу в PHP? –

+0

и как использовать этот файл дампа для подсчета слов? Я имею в виду, что я не вижу его связанным с строками результатов –