Autor | Zpráva | ||
---|---|---|---|
Tomasekkkk Profil * |
#1 · Zasláno: 5. 6. 2009, 07:37:34
Ahoj všem, měl bych jeden dotaz, mám nastavené v tabulce v mysql u políčka Nazev fulltext. Přes selectování v PHP potřebuji vyhledávat výsledky např. takto:
když zadám monitor LG, aby mi to listovalo od hora všechny monitory LG a ke konci ostatní zboží, které může odpovídat např. jen prvnímu nebo druhému slovu. Zatím mám select takto, ale nedělá to co bych chtěl: SELECT Nazev FROM databazezbozi_cz.ZBOZI WHERE MATCH(Nazev) AGAINST ('monitor LG*' IN BOOLEAN MODE) LIMIT 8 Dokážete mi prosím někdo poradit, zda-li to mám správně či je problém v něčem jiném? Díky moc Tom |
||
Kajman_ Profil * |
#2 · Zasláno: 5. 6. 2009, 08:18:48
Boolean mode nerozlišuje přesnost shody. Jen, zda je nebo není. Uložený fulltext index by šel setřídit, jen tam zase nebudou tak krátké názvy a nepůjde hvězdička.
|
||
Kajman_ Profil * |
#3 · Zasláno: 5. 6. 2009, 08:21:37
Třeba takto, ale rychlé to asi moc nebude. Jestli nebude lepší, když si naprogramujete vlastní fulltext.
SELECT Nazev, MATCH(Nazev) AGAINST ('monitor' IN BOOLEAN MODE) + MATCH(Nazev) AGAINST ('LG*' IN BOOLEAN MODE) AS slov FROM databazezbozi_cz.ZBOZI WHERE MATCH(Nazev) AGAINST ('monitor LG*' IN BOOLEAN MODE) ORDER BY slov desc LIMIT 8 |
||
Tomasekkkk Profil * |
#4 · Zasláno: 5. 6. 2009, 08:55:00
Kajman_
Díky za informaci, ale v tom políčku hledání může být více slov jako např. monitor DELL, nebo Flash 16GB apod. :-( |
||
Kajman_ Profil * |
#5 · Zasláno: 5. 6. 2009, 10:48:59
A kde je problém? Slova jsou oddělena mezerou, tak si je rozsekejte např. díky split a pak přes foreach poskládejte výpočet slov.
|
||
Tomasekkkk Profil * |
#6 · Zasláno: 5. 6. 2009, 10:51:37
Kajman_
Dobře, já v tom nejsem zase tak znalý, tak ¨to je pro mě trošku problém, ale díky za nasměrování, zkusím to nějak pořešit a naučit pořádně split apod. ;o) |
||
Časová prodleva: 15 let
|
0