Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 9 odgovora
  • 2.528 pregleda

Najnovija ↓

Ignore karakteri u pretrazi 02.01.2012. u 12:10 · pre 180 meseci #1
Pitanje je jednostavno, dok verujem da odgovor i nije toliko...

Potrebno mi je da ignorišem neke karaktere, koji su možda uneti u bazu, prilikom pretrage kao npr. razmak, tačke, crtice...

Kako da napravim SELECT upit koji pretražuje POLJE1 za string npr. 32pfl540312 i za rezultat nalazi 32 PFL-5403/12?
Re: Ignore karakteri u pretrazi 02.01.2012. u 20:34 · pre 180 meseci #2
Za case moze da resis tako sto kaze da je collation case insensitive. Za takav search, mozda nesto kao SELECT * FROM TABLE WHERE POLJE1 LIKE "32%pfl%5403%12" ?
Potpis
Please do not feed the Trolls!

Blasphemy? How can I blaspheme? I'm a god!'
Re: Ignore karakteri u pretrazi 02.01.2012. u 22:56 · pre 180 meseci #3
auuuuuuuu ...

jedino sto mozes da probas je soundex:

Code:

mysql> select soundex('32pfl540312'), soundex('32 PFL-5403/12');
+------------------------+---------------------------+
| soundex('32pfl540312') | soundex('32 PFL-5403/12') |
+------------------------+---------------------------+
| P400                   | P400                      |
+------------------------+---------------------------+
1 row in set (0.00 sec)


Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: Ignore karakteri u pretrazi 02.01.2012. u 23:25 · pre 180 meseci #4
To se, nagadjam (nikad probao soundex) indexira isto kao LIKE '%NESTO%' na text polju? :)

A da probas neki full text search softver van mysql-a?
Potpis
Please do not feed the Trolls!

Blasphemy? How can I blaspheme? I'm a god!'
Re: Ignore karakteri u pretrazi 02.01.2012. u 23:50 · pre 180 meseci #5
Pronašao sam rešenje... Dok ne nađemo bolje, duplirao sam kolonu nad kojim treba da se vrši pretraživanje, korišćenjem funkcije(PHP)
Code:
function text_index($text)
{
    $trazi = array(""", "&", "<", ">", " ", "@");
    $html_free = str_replace($trazi, "", $text);
    $trazi = array(" ", "/", "\\", "'", "\"", "-", "_", "&", ",", ";", ":", ".", "&");
    $rezultat = str_replace($trazi, "", $html_free);
    return $rezultat;
}
Sam sam je pisao i ubacivao promenljive. Meni završava posao, možda će još nekome...
Re: Ignore karakteri u pretrazi 03.01.2012. u 05:41 · pre 180 meseci #6
Citat:
nkrgovic: To se, nagadjam (nikad probao soundex) indexira isto kao LIKE '%NESTO%' na text polju? :)


soundex je funkcija kao svaka druga, rezultati funkcija se ne indexiraju (ne mozes unapred da znas rezultat funkcije). Ono sto mozes je da cuvas vrednost soundex-a u istoj tabeli pa da radis select ... where tabela.soundexvrednost = soundex('stavectrazis') ... to prilicno dobro radi posebno kod takvih zahteva kao sto je op napisao, posebno zato sto ce ti vratiti i "slicne" stringove :) .. probaj, to je mnogo dobra funkcija za tekst pretragu
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: Ignore karakteri u pretrazi 03.01.2012. u 11:29 · pre 180 meseci #7
Nemam poverenja u soundex, jer ne daje tačne već približne rezultate. U mom slučaju je izuzetno bitna preciznost... Mislim da dupliranje kolone nije problem i da je najbrže rešenje...
Code:
$sql = "SELECT polje FROM tabela WHERE polje_bez_znakova LIKE '".text_index($string)."';
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme