Iskanje s šumniki in brez v mysql
8 naročnikov
8 naročnikov
Morda kdo ve kako je najbolje rešiti zadevo,d a bi iskala iskalne pojme, če vpišem šumnike ali pa jih ne. Torej da bi deloval tako računalnik kot racunalnik če vpišeš v iskanje.
Elegantna rešitev, ki jo vem, je ta da koloni dam generalci collation in potem je c=č itd. Edina težava pri tem je potem sortiranje, ker ima c in č za isto črko, moram potem pri vsakem order by stavku uporabiti sloveniancollation, tega imam pa na strani veliko, pa tudi ne vem kakšen hit je to za procesiranje (mora vse na novo sortirati pri SELECT-u)?
Sem poskusil da bi bilo polje slovenianci in bi v funkciji iskanja dodal MATCH AGAINST generalCi samo ne dela, zgleda da full text vedno dela tako, da jemlje iz stolpca collation :-( Kar pa ni fino, ker to da je č = c rabim samo za iskalec, ne pa za sort in je bolj pravilno, da bi bil stolpec slovenianci, ne da moram vsako sortiranje reševati s slovenianci collationom.
Je kakšen obvoz mimo tega oz. kako imate drugi to rešeno, tisti ki imate ;-)
Hvala
Jerry
PS - Morda le še to, se vam zdi potrebno, da iskalec na spletni strani deluje tudi brez šumnikov ali je to nekako zgodovina, glede na to, da so nekatere besede lahko različne z in brez šumnikov in tehnično gledano c ni enak č itd.
14 odgovorov
Besede z in brez šumnikov imajo velikokrast drugačen pomen, tako da niso relevantni. Če nekdo vpiše sara ali šara, to pomeni čisto drugega.
Jaz bi na tvojem mestu pusti iskanje tako, da loči med temi besedami.
pavarti:
Besede z in brez šumnikov imajo velikokrast drugačen pomen, tako da niso relevantni. Če nekdo vpiše sara ali šara, to pomeni čisto drugega.Jaz bi na tvojem mestu pusti iskanje tako, da loči med temi besedami.
jaz bi se tukaj popolnoma strinjal s tabo. Samo še stranko je treba prepričat, da iskalnik na strani za 1000€ ni google :)
Ena nepreverjena varjanta, vprašanje pa kolk 'bremza'. Za probat pa je :)
replace(replace(replace(polje,'č','c'),'ž','z'),'š','s'),.....
instaliraj si sphinxSearch, ki je izredno hiter, dokaj preprost za namestit in omogoca enacitev sumnikov z nesumnikovimi variantami
Če nimaš nobene pogodbe ali kaj obvezujočega lahko stranko na hitro prepričaš da ostaneš na navadnem searchu. Zaračunaj dodatno delo, 100-200€ več, bo kar naenkrat star search super. Jaz to "taktiko" uporabljam, ko se stranki ne da dopovedat da pa mogoče nekaj ni dobra ideja. Delovalo v 90% primerov, tam kjer ni pa tudi kul, mo' money^^
Mimogrede, za iskalnik lahko uporabiš kar Google sam -
http://www.google.com/cse/
V kolikor nimaš nekaj posebnih zahtev pri svojem iskalniku, je to mogoče ok rešitev?
Ena najbolj enostavnih in ne ravno inteligentnih rešitev. Pred sql requstom sam poiščeš vse različice besede in uporabiš kaj takega.
SELECT * FROM table WHERE text=racunalnik
UNION ALL
SELECT * FROM table WHERE text=računalnik
Hvala za nasvete, site je moj in velik, gre za 1-2 poizvedbi na sekundo. Zanima me, ali je to, da išče brez šumnikov enako kot s šumniki sploh dobra ali slaba ideja.
Edino Sphynx pride v poštev, je pa iskalec v Mysql več kot dovolj dober za moje potrebe, nameščanje še enega modula... pa na Windowsih sem, ne da Spynxa na Windowsih ni, samo sphynx je precej zoprn za implementacijo, ker je treba precej kode spreminjati. Tisti replace(replace(replace( pa uporabljam na administraciji v enem primeru in ti povem, da bremza zelo (preveč).
Jerry
Ko sem zadnjič gledal spynx (že nekaj časa nazaj), je bilo tako, da je bilo treba full text querije malo drugače napisati, imam precej zapletene poizvedbe. Lahko je zdaj kaj drugače.