Autor | Zpráva | ||
---|---|---|---|
jares16 Profil |
#1 · Zasláno: 27. 6. 2012, 17:42:19 · Upravil/a: Moderátor (editace znemožněna) 27. 6. 2012, 19:41:10
Ahoj, narazil jsem na problém se kterým bych potřeboval poradit.
mám dvě tabulky clanky('id','autor') preklady('clanky_id','jazyk','title','obsah') a chtěl bych udělat fulltextové vyhledávání kreré by prohledávalo všechny jazykové mutace článku. bez operátorů zpřesňujících vyhledávání mám takovýto dotaz SELECT * FROM `clanky` JOIN `preklady` ON `clanky`.`id` = `preklady`.`clanky_id` WHERE MATCH (`preklady`.`title`,`preklady`.`obsah`) AGAINST ('$_GET['hledat']') ale takto pokud je hledaný řetězec obsažen ve více jazykových mutacích jednoho článku, tak je vrácen článek několikrát. potřeboval bych nějak zajistit aby se vracel článek pouze 1x a vždy s jazykem který je prioritní (př. na stránce je nastaven jazyk "cz" a článek je v "cz","en","de", a ve všech je obsaženo klíčové slovo vyhledávání, tak se vrátí článek "cz" něco jako GROUP BY `clanky`.`id` a každou skupinu ORDER BY FIELD ('cz','en','de') nebo něco podobného. Děkuji za jakoukoli radu! Moderátor Kajman: Vkládej prosím kódy mezi značky [>pre] a [>/pre] (stačí kliknout na ).
|
||
Kajman Profil |
Můžete si to filtrovat až v aplikaci? Tedy si vybrat si z databáze všechny seřazené tak, že stejné budou u sebe a nahoře bude chtěný jazyk. Pak v např. v php ignorovat ty, které už byly vypsány dříve.
Edit: možná by šlo i něco ošklivého jako SELECT * FROM ( SELECT `clanky_id`, SUBSTRING_INDEX(GROUP_CONCAT(`jazyk` ORDER BY FIELD (`jazyk`,'de','en','cz') DESC SEPARATOR ','),',',1) jazyk FROM `preklady` WHERE MATCH (`preklady`.`title`,`preklady`.`obsah`) AGAINST ('$_GET['hledat']') GROUP BY `clanky_id` ) tmp JOIN `preklady` ON `preklady`.`clanky_id` = tmp.`clanky_id` AND `preklady`.`jazyk` = tmp.`jazyk` JOIN `clanky` ON `clanky`.`id` = tmp.`clanky_id` |
||
jares16 Profil |
#3 · Zasláno: 27. 6. 2012, 22:49:08
možnost filtrace v php tu je, ale záleží mi především na rychlosti. Položek se může časem v db objevit i přes 5000 - 10000 takže musím vyzkoušet co nejvíce možností a testovat.
Ještě jsem přemýšlel o možnosti do článků přidat článek v AJ a joinovat k tomu překlad (pokud je k dispozici) v jazyce který je zvolen na stránce. Protože předpokládám že kdo bude vyhledávání využívat tak bude chtít výsledky buď v rodném jazyce nebo v AJ. Díky za tip! Vyzkouším jak to bude náročné na výpočetní výkon. |
||
Časová prodleva: 12 let
|
0