Jump to content

[vyřešeno] Nefunkční vyhledávání


rcking
 Share

Recommended Posts

Všimli jste si toho někdo jak (ne)funguje vyhledávání? Mám produkt nazvaný CX450-01-01 a když dám hledat tento výraz tak to vyjede úplně všechny produkty (tento je někde zapadlý). Když napíšu toto jméno i do popisu, tak to ukáže tento výrobek na prvním místě, ale pod ním vyjede seznam všech ostatních z obchodu. No a pokud zadám třeba jen CX450 nebo 01-01 tak to nenajde nic. To se mi zdá jako DOST vážná chyba..

Share this post


Link to post
Share on other sites

Všimli jste si toho někdo jak (ne)funguje vyhledávání? Mám produkt nazvaný CX450-01-01 a když dám hledat tento výraz tak to vyjede úplně všechny produkty (tento je někde zapadlý). Když napíšu toto jméno i do popisu, tak to ukáže tento výrobek na prvním místě, ale pod ním vyjede seznam všech ostatních z obchodu. No a pokud zadám třeba jen CX450 nebo 01-01 tak to nenajde nic. To se mi zdá jako DOST vážná chyba..


akorat vim ze to nehleda nazvy kratsi 4 znaky

Share this post


Link to post
Share on other sites

JJ, to jsem četl, ale když zadám třeba 01-01 tak to má víc než 4 znaky a nic... tak jsem pokusy zjistil, že když si to přejmenuju třeba na 01-0155 a hledám 55 tak to normálně najde.. čiže se prý musí něco změnit v mysql, ale nevím jak se dostat ke konfiguračnímu souboru přes phpmyadmin..

Share this post


Link to post
Share on other sites

vzhledem k tomu ze prestashop vyhledava v mysql fulltextove pomoci
MATCH (col1,col2,...) AGAINST (expr [search_modifier])
tak se v tomto pripade bere pomlcka jako oddelovac slov.
tzn. ze 01-01 ti to nenajde nic, protoze to hleda vsechno co obsahuje DVA retezce 01 nebo 01 ale ma to mene jak 3 znaky kazde takze to to nehleda nic.
Kdyby jsi mel zbozi s nazvem "slovo-veta-pismena" a dal hledat "slovo-pismena" tak ti to bude hledat vse co obsahuje bud "slovo" nebo "pismena" ale nikdy ti to nebude hledat spojeni "slovo-pismena".
Snad jsem to vysvetlil dobre :)
kdo chce udelat jinak to vyhledavani at si to zmeni v /classes/Search.php hned na zacatku

Share this post


Link to post
Share on other sites

vzhledem k tomu ze prestashop vyhledava v mysql fulltextove pomoci
MATCH (col1,col2,...) AGAINST (expr [search_modifier])
tak se v tomto pripade bere pomlcka jako oddelovac slov.
tzn. ze 01-01 ti to nenajde nic, protoze to hleda vsechno co obsahuje DVA retezce 01 nebo 01 ale ma to mene jak 3 znaky kazde takze to to nehleda nic.
Kdyby jsi mel zbozi s nazvem "slovo-veta-pismena" a dal hledat "slovo-pismena" tak ti to bude hledat vse co obsahuje bud "slovo" nebo "pismena" ale nikdy ti to nebude hledat spojeni "slovo-pismena".
Snad jsem to vysvetlil dobre :)
kdo chce udelat jinak to vyhledavani at si to zmeni v /classes/Search.php hned na zacatku


A nebyl bys prosim ochoten se nam na to mrknout ( co vim tak ses tu asi jedinej,kterej na to ma)
Mimochodem bych byl opravdu rad kdybyto hledalo i podle referencnich cislech zbozi.
predem dik :)

Share this post


Link to post
Share on other sites

2 haVaj
jo tohle jsem už pochopil z různých diskusí, ale pořád to není řešení.. v podstatě by stačilo, aby minus nebralo jako mezeru (vymazal jsem to ze search a nahradil práznými uvozovkami, ale nepomohlo to..)

Share this post


Link to post
Share on other sites

Vysvetlenie je trosku ine... hladany vyraz ako CX450-01-01 by sa dal vysvetlit takto: Hladaj slovo CX450 ale zaroven vynechaj cislo 01 v najdenych stlpcoch. Nejak takto si to vysvetli databaza ;)

Cize vysledok by mal byt vyhladane slovo CX450 a zoradene by to malo byt podla skore zhodovaneho slova v databaze.

Je to preto lebo znamienko - (minus) pred kazdym slovom v tomto pripade znamena aby sa toto slovo pri vyhladavani v databaze vynechalo... Cize vsetky prehladane stlpce by mali obsahovat slovo CX450 ale tie stlpce ktore obsahuju aj slovo 01 sa vynechaju.

Do kazdeho hladaneho slova sa potom pridava za hladany vyraz aj hviezdicka, CX450* co znamena ze sa vyhladaju vsetky zaznamy ktore zacinaju na slovo CX450 a s lubovolnym poctom znakov za tymto slovom...

viac o tom si mozte precitat tu http://interval.cz/clanky/fulltextove-vyhladavanie-v-mysql-teoria/

Share this post


Link to post
Share on other sites

nezkousel jsem, ale zda se mi divne aby to hledalo vsechno kdyz tam je jen

LIKE \''.$expr.'\'

misto

LIKE \'%'.$expr.'%\'


to prvni najde jen presne zneni podle hledaneho textu (jako bys tam dal ='.$expr.'), kdezto to druhe najde i to, kdyz je hledany text obsazen v kontrolovane hodnote ...

Share this post


Link to post
Share on other sites

  • 8 months later...
Tady mate funkcni search.php - hledá to všechno :-)


Skript ovsem nefunguje spravne:
- a to diky maximalni shode s hledanym vyrazem :(
- nehledaji se samostatna slova z hledaneho vyrazu
- vyhledavani zobrazi i neaktivni polozky

Bohuzel vyhledavani v mysql a regularni vyrazy a vubec tuto problematiku nemam zatim zmaklou, takze prozatim nemohu nabidnout alternativu. Nam tedy alespon dobre funguje puvodni skript.

Share this post


Link to post
Share on other sites

  • 6 months later...
  • 1 month later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More