| 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: 13 let
|
|||
0
).