Newsgroup: it.comp.www.php
Titolo: ricerca in un fulltext

ciao ragazzi
ho bisogno di fare una ricerca in un databse di articoli giornalistici ma
con una query del genere SELECT * FROM Articoli WHERE Testo LIKE
'%$ricerca%';
mi viene stampato un messaggio d'errore
Warning: Supplied argument is not a valid MySQL result resource in
/il_mio_path/cerca.php on line 12
qualcuno puo' aiutarmi? la colonna Testo č una colonna Longtext NOT NULL
Josh
Grazie

/il_mio_path/cerca.php on line 12
questa linea vuole dire che la query non ha ritornato nessun valore mentre
tu cerchi di accedere ad un valore.
Iscritto alla mailinglist nazionale sul PHP? E a quella sull'SQL?
http://www.ziobudda.net/mailinglist/
-- 
"Segnati le ossa che mo' te le mischio"
--
Michel <ZioBudda> Morelli               
mic...@ziobudda.net
ICQ UIN: 58351764                       PR of Linux in Italy
http://www.ziobudda.net
 
http://www.linuxlab.it

 /il_mio_path/cerca.php on line 12
A naso direi che la tua query non ha trovato nulla e tu cerchi
comunque di accedere ai dati. Controlla sempre che il valore di
ritorno di mysql_db_query() sia diverso da zero.
A proposito di ricerche fulltext, dai un'occhiata a questo
estratto del manuale di mysql (cap. 25, "MySQL Internals"):
mysql> CREATE TABLE t (a VARCHAR(200), b TEXT, FULLTEXT (a,b));
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO t VALUES
    ->   ('MySQL has now support', 'for full-text search'),
    ->   ('Full-text indexes', 'are called collections'),
    ->   ('Only MyISAM tables','support collections'),
    ->   ('Function MATCH ... AGAINST()','is used to do a search'),
    ->   ('Full-text search in MySQL', 'implements vector space model');
Query OK, 5 rows affected (0.00 sec)
Records: 5  Duplicates: 0  Warnings: 0
mysql> SELECT * FROM t WHERE MATCH (a,b) AGAINST ('MySQL');
+---------------------------+-------------------------------+
| a                         | b                             |
+---------------------------+-------------------------------+
| MySQL has now support     | for full-text search          |
| Full-text search in MySQL | implements vector-space-model |
+---------------------------+-------------------------------+
2 rows in set (0.00 sec)
mysql> SELECT *,MATCH a,b AGAINST ('collections support') as x FROM t;
+------------------------------+-------------------------------+--------+
| a                            | b                             | x      |
+------------------------------+-------------------------------+--------+
| MySQL has now support        | for full-text search          | 0.3834 |
| Full-text indexes            | are called collections        | 0.3834 |
| Only MyISAM tables           | support collections           | 0.7668 |
| Function MATCH ... AGAINST() | is used to do a search        |      0 |
| Full-text search in MySQL    | implements vector space model |      0 |
+------------------------------+-------------------------------+--------+
5 rows in set (0.00 sec)

 wrote in message
Pine.LNX.4.30.0103241809290.1549-100000@miclaptop...


 Query OK, 0 rows affected (0.00 sec)
[CUT]
Che bellezza! Sai (sapete!) se anche Postgres supporta qualcosa del
genere? Lo sto utilizzando per un progetto e se supportasse questo tipo
di dati e ricerche mi farebbe _molto_ comodo!
TIA
Ciao
M.
-- 
rm -rf 
and be happy

 [...] mi farebbe _molto_ comodo!
In effetti è decisanente comodo. Ha però una limitazione: non
permette di cercare parti di parola.

 permette di cercare parti di parola.
Beh, non si può volere tutto dalla vita!
Ciao
M.
[1] A dire la verità, sto solamente cercando di vedere l'incidenza di
una parola in un campo di testo, e visualizzarla in percentuale.
Qualcosa del tipo:
- conta i caratteri della parola/e
- cercala/e in un campo di testo
- se la trovi, conta tutte le parole del campo di testo dove hai trovato
  la parola
- fai una bella percentuale   caratteri parola
                            --------------------
                            caratteri campo text
Ma non essendo un mago dell'SQL sono ancora incartato in qualche punto!
Cmq, facendo così (ok, a parte il carico altino per il sistema!) si
riesce anche a cercare una parola per parti ... Almeno credo! :-))
Vediamo cosa ne esce!




CREATE TABLE temp_x ( a varchar(200), t text );
INSERT INTO temp_x VALUES ('this is not','a very good implementation');
INSERT INTO temp_x VALUES ('Yet, it does work.','After a fashion');
INSERT INTO temp_x VALUES ('Is it fashionable','to do text searches');
SELECT * FROM temp_x WHERE a||' '||t LIKE '%fashion%';
         a          |          t
--------------------+---------------------
 Yet, it does work. | After a fashion
 Is it fashionable  | to do text searches
Se poi usi "strtr()" per sostituire "$string" con "<B>$string</B>", con
PHP4.0, puoi fare la ricerca con l'highlight delle stringhe trovate :-)
Leonardo fantasista
-- 
".signature": bad command or file name

                            caratteri campo text
PostgreSQL, con la tabella vista prima:
SELECT (length('fashion'::text)*100.0)/length(t) FROM temp_x where t \
	LIKE '%text%';
Leonardo


 ".signature": bad command or file name
Mi inginocchio sui ceci ardenti! :-)
Solo una cosa: se io imposto una ricerca della parola "fashion"
all'interno del db, la fine della query non dovrebbe essere 
.... where t LIKE '%fashion%';
o non ho capito un tubo?
Altra cosetta: esistono in rete tutorial e documenti che un po' più
approfonditi delle varie doc ufficiali che facciano anche esempi
fantasiosi come questi che mi hai dato?
Ciao
M. riverente


fantasiosi come questi che mi hai dato?
Uhm. Non lo so mica. Io mi sono fatto una navigata fra manuale e
sorgenti, quest'estate :-)
Leonardo con un c**** da fare
