Autor Zpráva
nethor
Profil
Dá se nějak zjednodušit tento dotaz?:
select * from `tabulka`  where  
CONCAT_WS(' ', nadpis , zahlavi , text , sklc )  like   'slovo 1'   ||
CONCAT_WS(' ', nadpis , zahlavi , text , sklc )  like   'slovo 2'   ||
CONCAT_WS(' ', nadpis , zahlavi , text , sklc )  like   'slovo 3'  ;

Vypisovat stále dokola 'CONCAT_WS(' ', nadpis , zahlavi , text , sklc ) ' mi připadá jako opičárna :-)
Nikde se mi to nadaří dohledat.
__construct
Profil
nethor:
Myslím, že lepšie by bolo použitie fulltextového vyhľadávania (Vyžaduje to mať tabuľky MyISAM a nad stĺpcami v ktorých hľadáš kľúče).
laijk
Profil
nedalo by sa to takto?

select * FROM `tabulka` WHERE CONCAT_WS(' ', nadpis , zahlavi , text , sklc ) IN ('slovo 1','slovo 2','slovo 3');
Batrachus
Profil
Pokud tam přistupuješ přes PHP, tak to můžeš zjednodušit pomocí foreach.
Tori
Profil
nethor:
Jestli nechcete psát tu funkci xkrát, tak by snad mohlo jít tohle, ale pochybuji, že to bude mít nějaký jiný přínos.
select *, CONCAT_WS(' ', `nadpis`, `zahlavi`, `text`, `sklc`) slovo 
from `tabulka` 
where slovo like 'slovo 1' || slovo like 'slovo 2' || slovo like 'slovo 3';
nethor
Profil
__construct:
Fulltext má dost nepříjemná omezení , to už se tady párkrát probíralo.

laijk:
Něco takového jsem měl na mysli, bohužel to nefunguje - prázdný výsledek.

Batrachus:
Jasně, používám implode, ale doufal jsem, že to půjde napsat elegantnějším způsobem.

Tori:
Tohle jsem zkoušel, kupodivu to také nechodí:
Unknown column 'slovo' in 'where clause' 


I když jsem doplnil: ... `sklc`) as slovo ...
__construct
Profil
nethor:
Fulltext má dost nepříjemná omezení , to už se tady párkrát probíralo.
Bude Ti v tomto prípade vadiť minimálna dĺžka indexovaného slova, alebo zoznam neindexovaných slov? Používanie LIKE na také hľadanie je „brute-force“. Fulltext je podľa mňa v tomto prípade efektívnejším riešením.
nethor
Profil
__construct:
Bude Ti v tomto prípade vadiť minimálna dĺžka indexovaného slova, alebo zoznam neindexovaných slov?
Obojí.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0