PDA

View Full Version : [MySQL] problema con indice FULLTEXT


anonimizzato
04-06-2005, 15:40
in una banalissima tabella "visite" con campi:

id
titolo
corpo

ho associato al campo corpo (mediumtext) un indice per le ricerche FULLTEXT.

tuttavia quando uso la query

SELECT corpo FROM visite WHERE MATCH(corpo) AGAINST('parola');

ho sempre un output di 0 record questo anche usando parole + lunghe di 4 caratteri, minori del 50% dell'intero testo e quasi sicuramente non presenti nella stop-word-list.

**************************************************

SELECT corpo FROM visite WHERE MATCH(corpo) AGAINST('parola' IN BOOLEAN MODE);

così funziona ma non capisco perchè.

Se non erro la "modalità booleana" elimina la clausola del 50% ma non è un problema che si poneva con la ricerca che stavo effettuando.

Proprio non capisco.

kingv
04-06-2005, 20:21
dalla documentazione della 4.1:

The 50% threshold has a significant implication when you first try full-text searching to see how it works: If you create a table and insert only one or two rows of text into it, every word in the text occurs in at least 50% of the rows. As a result, no search returns any results. Be sure to insert at least three rows, and preferably many more.

è il tuo caso ?

anonimizzato
05-06-2005, 10:59
direi proprio di si perchè funziona. :)

Cmq non ho capito il perchè di questa cosa:

"If you create a table and insert only one or two rows of text into it, every word in the text occurs in at least 50% of the rows."

kingv
05-06-2005, 14:57
se io inserisco due righe in una tabella ad esempio:

id testo
1 forum di hwupgrade
2 forum di html.it

ogni parola copare almeno nel 50% delle righe, anzi nel dettaglio:
forum -> 100%
di -> 100%
hwupgrade -> 50%
html.it -> 50%

ma se inserisco una terza riga , ad esempio:
3 forum di elaborare

la parola "hwupgrade" scende al 33%, e così via....