Diskuze: Fulltextové vyhledávání v MySQL - Relevance a plus
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.

Vlastník

Zobrazeno 7 zpráv z 7.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
Pokial sa nemylim tak multislovne vyhladavanie nemusis davat osobitne s + ale das do zatvoriek, takze
WHERE MATCH (title, description, content) AGAINST ( '+(php pole) -(mysql)' IN BOOLEAN MODE)
vrati texty s 'php' a 'pole' ale nesmie obsahovat 'mysql'.
Relevancia funguje tak, ze ak hladas napr 'php' a najde ti 500 textov, tak nema velku relevanciu, neni takzvane unikatne a tieto vysledky budu mat nizsiu relevanciu. Ak slovo 'pole' najde len 10krat tak ma o dost vacsiu relevanciu a texty s tymto slovom ziskaju vyssie score. Skore moze byt od nula do jedna, ale videl som uz aj nad 1.
Pre vytvorenie ukazky obal slovo 5 slovami pred aj po. Ak je viac slov a je medzi nimi viac slov tak tam hod 3 bodky. Urcite by som nedaval v ukazke viac ako 20 slov.
Ak najdes nejaku kniznicu, daj vediet. Rad si pozriem riesenia. Pred casom som riesil stranku s 25000 produktami. Tam sme si to exportovali cronom kazdy den do SOLR a potom solr je uzasne vykonne na taketo fulltext hladania.
este som tam nasiel
“” Defines a phrase (as opposed to a list of individual words, the entire phrase is matched for inclusion or exclusion).
vyskusaj to dat do tychto uvodzoviek a pred uvodzovky daj +
Ahoj, díky za reakci. Zkusil jsem to, bohužel jsem se nedobral žádných výsledků.
$phrase = '+"C++"*'
to nebere vůbec. Když zadám:
$phrase = '"C++"'
Tak to sežere, ale nic to nevyhledá. Našel jsem ještě topic na stacku - http://stackoverflow.com/…p-the-term-c, mění se tam nastavní MySQL, aby vyhledávala ve fulltextu i kratší slova, i po změně to ale nic nenajde. Ještě to možná zkusím na nějakém menším dotazu, ale spíše to dám k ledu a budu dále využívat Google.
Mam pocit ze si nasiel odpoved sam. V jednej odpovedi sa tam pise, ze si mas nastavit
[mysqld]
ft_min_word_len=3
Ja som robil test s mojim nastavenim kde mam minimalnu dlzku slova 4. Do
tabulky som si vlozil 'cccc++' a hladal som 'cccc' alebo 'cccc++' v oboch
pripadoch mi to naslo ten jeden riadok. Z toho predpokladam ze mysql si +
odstrani z query stringu a vobec ho nehlada. V tvojom pripade ak chces najst c++
tak by som este znizil hodnotu minimalnej dlzky slova na 1. Predpokladam ze
cestina nepouziva samotne c casto a tak ked budu ludia hladat c++ bude to vracat
relevantne vysledky.
Prikladam obrazok z predosleho komentu
Dalsia moznost je ze si namapujes fulltext boolean syntax s inymi znakmi kde
tvoje + nebude.
ft_boolean_syntax = + -><()~*:""&|
zn: toto tiez nie je super riesenie, lebo potom ziskas + ale stratis iny znak
To nastavení jsem právě měnil... Zkusim to na nějakém jednodušším dotazu.
Zobrazeno 7 zpráv z 7.