Fulltextové vyhledávání – české znaky

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
breeta
Člen | 68
+
0
-

Zdravím, zkoušel jsem nastavit fulltext v nette:

->where("MATCH(title, text) AGAINST ('$search' IN BOOLEAN MODE)")
 ->order("5 * MATCH(title) AGAINST ('$search') + MATCH(text) AGAINST ('$search') DESC");

ale nejdou vyhledávat české znaky …

enumag
Člen | 2118
+
0
-

Když dotaz sestavíš ručně a spustíš přes phpmyadmin nebo adminer tak funguje?

llook
Člen | 407
+
0
-

Co přesně znamená „nejdou vyhledávat“? Máš u tabulek stejný charset, jako používáš v kódu?

breeta
Člen | 68
+
0
-

V phpMyAdmin jde příklad:

SELECT * FROM `article`WHERE  MATCH(title, text) AGAINST ('vyhledávání' IN BOOLEAN MODE)

ale v aplikaci jak je čárka nebo háček atd. se nic nenajde …

->where("MATCH(title, text) AGAINST ('vyhledávání' IN BOOLEAN MODE)");

Slovo např. disponuje, najde …

Editoval breeta (1. 3. 2013 10:14)

llook
Člen | 407
+
0
-

Pak mě napadá akorát akorát to, že má tabulka v DB nastavený jiný charset, než jaký používáš v tom skriptu.

breeta
Člen | 68
+
0
-

Tabulku mám v utf8_czech_ci, při úkládání, update vše jede jak má, kdyby tam bylo špatné kodování tak přece to bude blbnout taky ne?

llook napsal(a):

Pak mě napadá akorát akorát to, že má tabulka v DB nastavený jiný charset, než jaký používáš v tom skriptu.

llook
Člen | 407
+
0
-

Ještě něco mě napadlo, zkus tohle:

->where("MATCH(title, text) AGAINST (? IN BOOLEAN MODE)", 'vyhledávání')
breeta
Člen | 68
+
0
-

Ano, to je ono, DÍKY!

llook napsal(a):

Ještě něco mě napadlo, zkus tohle:

->where("MATCH(title, text) AGAINST (? IN BOOLEAN MODE)", 'vyhledávání')
breeta
Člen | 68
+
0
-

Ještě co se týče druhého dotazu na databázi:

->order("5 * MATCH(title) AGAINST ('$search') + MATCH(text) AGAINST ('$search') DESC");

Jak napsat order aby to bylo dobře?

llook
Člen | 407
+
0
-

Těžko, v order() nejde používat parametry a ani SqlLiteral a myslím, že totéž platí i pro select(). Tohle podle mě přes table selection API nejde, jedině ->query().

redhead
Člen | 1313
+
0
-

Stejně bych to asi ale zadal jako bug, protože fixní hodnotu, bych já osobně nedával jako parametr (?) a to, že to bez diakritiky jde a s ní ne, je nějaký divný.