|
![]() |
#1 |
Branimir Momcilovic
Qualified
Datum učlanjenja: 15.02.2006
Lokacija: Beograd
Poruke: 167
Hvala: 47
25 "Hvala" u 8 poruka
![]() |
![]() Pravim pretragu u mojoj aplikaciji. Hteo bih da izbegnem gomilu kontrola, pa sam se odlučio za gugl pristup. Znači koristim jedan input u koji korisnik unosi termin za pretragu, uradiću i neku jednostavnu sintaksu koja omogućava "advanced search", znate nešto kao kad u guglu otkucam:
Kôd:
site:devprotalk.com pretraga Evo primera na šta mislim: Microsoft
__________________
Važnije je biti ljubazan, nego biti u pravu. |
![]() |
![]() |
![]() |
#2 |
VD IT Direktora
Invented the damn thing
Datum učlanjenja: 08.06.2005
Lokacija: Beograd
Poruke: 2.118
Hvala: 503
1.307 "Hvala" u 282 poruka
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Ne bi trebalo da ti upiti budu teški za parsiranje jer ne moraš da podržiš nikakvu komplikovanu (npr. ugnježdenu) strukturu, verovatno može regexpovima sasvim fino da se parsira.
__________________
blog |
![]() |
![]() |
![]() |
#3 |
Ivan Dilber
Sir Write-a-Lot
|
![]() sve zavisi od baze koju koristis, najlakse ti je da koristis direktno sintaxu koju ona podrzava. Recimo mysql fulltext podrzava direktno operatore tipa one -,+, "" i slicno, tako da ja obicno pustim ljude da direktno kucaju te operatore (npr. "foo bar" +bla -blabla) i onda samo sa regexpima proverim da nema nedozvoljenih karaktera...
__________________
Leadership is the art of getting people to want to do what you know must be done. |
![]() |
![]() |
![]() |
#5 |
Ivan Dilber
Sir Write-a-Lot
|
![]() @jablan: Nisam lepo napisao, mislio sam na znake koji imaju posebno znacenje u fulltext pretragama... cisto da upozoris ljude ako pisu gluposti (vecini su boolean upiti jasni koliko i teorija niti...)
@braMom: A imas i onu foru kad korisnik trazi usera 'Pera Peric', a ocekuje zapravo da dobije +"Pera Peric", ali kad trazi fotografije sa 'sun sea' ocekuje da dobije prvo +sun +sea, ali i sve 'sun' ili 'sea', samo sortirane ispod. E tu onda zavisno od vrste pretrage treba malo akrobatike, da ti sam provalis sta korisnik zeli da dobije po defaultu (AND, OR, neku kombinaciju), pa da mu automatski formatiras tako na osnovu obicnog niza keyworda koje je on ukucao... Sve u svemu krvav posao ako zelis da napravis da zaista bude "k'o gugl" ![]()
__________________
Leadership is the art of getting people to want to do what you know must be done. Poslednja izmena od ivanhoe : 26. 04. 2011. u 21:42. |
![]() |
![]() |
![]() |
#6 |
Branimir Momcilovic
Qualified
Datum učlanjenja: 15.02.2006
Lokacija: Beograd
Poruke: 167
Hvala: 47
25 "Hvala" u 8 poruka
![]() |
![]() Hvala vam, verovatno ću za početak da iskoristim Jablanov predlog, neko jednostavno seckanje regexpovima.
@ivanhoe Vidim da je krvav, ne bi se raspitivao za postojeću implementaciju da mogu da ga napravim na brzinu ![]()
__________________
Važnije je biti ljubazan, nego biti u pravu. |
![]() |
![]() |
![]() |
#7 |
VD IT Direktora
Invented the damn thing
Datum učlanjenja: 08.06.2005
Lokacija: Beograd
Poruke: 2.118
Hvala: 503
1.307 "Hvala" u 282 poruka
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Evo ako može da pomogne za početak:
Kôd:
def parse_query s s.scan(/((\S+)\:\s?)?([+-])?(("(.+?)")|(\S+))/).map{|match| Hash[ [nil, :prefix, :plusminus, nil, nil, :phrase, :word].zip(match).select(&:all?) ] } end p parse_query 'foo +bar -baz "dev pro talk" site:devprotalk.com category:cat1' Kôd:
[ {:word=>"foo"}, {:plusminus=>"+", :word=>"bar"}, {:plusminus=>"-", :word=>"baz"}, {:phrase=>"dev pro talk"}, {:prefix=>"site", :word=>"devprotalk.com"}, {:prefix=>"category", :word=>"cat1"} ]
__________________
blog Poslednja izmena od jablan : 27. 04. 2011. u 13:42. Razlog: manja ispravka |
![]() |
![]() |
![]() |
Alati teme | |
Način prikaza | |
|
|