2012-04-06 10 views

Respuesta

5

ACTUALIZACIÓN Me moví mi respuesta original hacia abajo

tengo una sugerencia extraña

Es posible que necesite utilizar el m utilidad ysql llama myisam_ftdump

Aquí es un vertedero FULLTEXT de la muestra en mi respuesta original

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 

Si usted puede generar esto como un archivo de texto, puede tener PHP analizarlo para la palabra que busca .

respuesta original

Con o sin BOOLEAN MODE, la respuesta es no.

Sin embargo, se puede mostrar la clasificación sobre la base de ocurrencia palabra y la longitud total de cadena de la siguiente manera:

datos de la muestra

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'); 

Este es el resultado de varias clasificaciones de búsqueda

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

la El problema es que el puntaje debe ser normalizado y para mí parece imposible porque depende del número de filas y de otros factores completamente dinámicos. ¿Supongo que tengo que hacer lo que quiero en PHP entonces? –

+0

y cómo usar ese archivo de volcado para contar palabras? Quiero decir que no lo veo conectado a las filas de los resultados –

Cuestiones relacionadas