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