Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

Problema query
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> MySQL
Subiectul anterior :: Subiectul următor  
Autor Mesaj
adyre



Data înscrierii: 06/Dec/2004
Mesaje: 440
Locație: Buzau

Trimis: Joi Noi 08, 2007 5:53 pm    Titlul subiectului: Problema query  

Am urmatorul Query:
Cod:
SELECT
     produse.cod_scurt,
     produse.titlu,
     produse.descriere,
     grupe.subcat,
     brand.denumire
FROM produse
     INNER JOIN grupe ON produse.id_grupa = grupe.id_grupa
     INNER JOIN brand ON produse.id_brand = brand.id_brand
WHERE
     MATCH(produse.cod_scurt, grupe.subcat, produse.titlu,
                produse.descriere, produse.garantie, brand.denumire)
AGAINST('120 GB' WITH QUERY EXPANSION)




faza e ca nu prea merge.. Adik rezultatul: 'Incorrect arguments to MATCH'

K... M-am gandit sa prescurtez putin. Si am prescurtat in asta:
Cod:
SELECT * FROM produse
WHERE
   MATCH(cod_scurt, titlu, descriere, garantie)
   AGAINST('120 GB' WITH QUERY EXPANSION)

Rezultatul: 'Can't find FULLTEXT index matching the column list'

Cam care ar fi cea mai buna interogare pentru o cautare de calitate.

Precizez ca acel '120 GB' e cuvantul pe care il caut.

Multumesc anticipat.

PS: Versiunea de MySQL e 'MySQL 5.0.45'.
Sus  
Quber



Data înscrierii: 27/Iun/2006
Mesaje: 807
Locație: localhost

Trimis: Joi Noi 08, 2007 6:36 pm    Titlul subiectului:  

Incearca

Cod:
SELECT * FROM produse
WHERE
   cod_scurt LIKE '%120 GB%' OR titlu LIKE '%120 GB%' OR descriere LIKE '%120 GB%' OR garantie LIKE '%120 GB%'


Daca vrei ca toate cimpurile sa contina cuvintul cautat in loc de OR pune AND...!

Succese...!
Sus  
adyre



Data înscrierii: 06/Dec/2004
Mesaje: 440
Locație: Buzau

Trimis: Joi Noi 08, 2007 11:24 pm    Titlul subiectului:  

Ce ai pus tu e mai putin ajutator... Cu MATCH si AGAINST ai posibilitatea '+/-' si o cautare cu MATCH si AGAINST e mult mai buna. Un match si against nu face selectie dupa primele lucruri gasite, ci din toate, ceea ce si concat() in schimb e mai mult pe cuvinte, nu pe fraze.

Daca faci ceva de genul:
Cod:
SELECT id_ceva, MATCH(camp1, camp2) AGAINST ('Cuvant') as relevanta FROM tabela
[/code]
o sa-ti returneze ceva de genul:
Cod:
+=========+===========+
+ id_ceva | relevanta |
+=========+===========+
|  1      |    0.6    |
-----------------------
|  2      |    0.0    |
-----------------------
|  3      |    0.2    |
-----------------------


Unde relevanta este exact ceea ce se intelege... Asta daca am inteles eu bine aceasta functie.

Pe MySQL.com (mai exact in sectiunea FunctionsFull-Text Search ) si tot n-am reusit sa aflu unde e buba. Poate am sarit vreun paragraf care intial nu arata a fi ceva important pe cand poate acel paragraf ar fi cel care mi-ar spune exact unde e buba.

Topicul ramane deschis. Va rog, daca stiti careva care e buba pleassseeee HELP!
Sus  
vectorialpx



Data înscrierii: 01/Mar/2005
Mesaje: 3001
Locație: țopăi pe tasta DELETE

Trimis: Vin Noi 09, 2007 8:51 am    Titlul subiectului:  

ia incearca "AGAINST('+120' ..."

edit // acum am vazut... ce e cu join-urile alea in FROM... ?
ia taie WHERE... si vezi ce iese... ca am impresia ca problema e mai in spate
Sus  
adyre



Data înscrierii: 06/Dec/2004
Mesaje: 440
Locație: Buzau

Trimis: Vin Noi 09, 2007 9:06 am    Titlul subiectului:  

Nu :( .... Fara AGAINST si MATCH mere perfect... Chiar si aprox. 2000 de randuri le scoate in 0.001 secunde pe Windows.
Sus  
kyron



Data înscrierii: 16/Sep/2004
Mesaje: 542
Locație: Bucuresti

Trimis: Vin Noi 09, 2007 11:01 am    Titlul subiectului:  

campurile implicate in query sunt FULLTEXT ?

tabelele respective sunt MyIsam ?

tipurile campurilor care te intereseaza pe tine sunt CHAR, VARCHAR sau TEXT ?
Sus  
adyre



Data înscrierii: 06/Dec/2004
Mesaje: 440
Locație: Buzau

Trimis: Vin Noi 09, 2007 11:09 am    Titlul subiectului:  

VARCHAR, TINY TEXT, TEXT.

Faza e ca am incercat si pe o alta tabela cu MATCH(un_camp) care e TEXT si tot aceea problema: 'SQL Error: Can't find FULLTEXT index matching the column list'

Tabelele sunt MyISAM. Asa ca si asta cam indeplinesc...

Nush ce sa mai cred.. Am incercat si pe MySQL 4.1.11 pe DEBIAN si pe MySQL 5.0.45 pe Windows.
Sus  
kyron



Data înscrierii: 16/Sep/2004
Mesaje: 542
Locație: Bucuresti

Trimis: Vin Noi 09, 2007 11:20 am    Titlul subiectului:  

pai exact ce ti-am spus la punctul 1. Seteaza campurile respective FULLTEXT !!

Cod:
ALTER TABLE `tabela` ADD FULLTEXT (`camp`)
Sus  
adyre



Data înscrierii: 06/Dec/2004
Mesaje: 440
Locație: Buzau

Trimis: Vin Noi 09, 2007 11:22 am    Titlul subiectului:  

Multumesc mult... Asta era...

Nici prin cap nu-mi trecea ca trebuie sa schimb ceva la tabela...
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> MySQL
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community