» »

[mySQL] Vrstni red iskanja

[mySQL] Vrstni red iskanja

Old Spice ::

Pozdravljeni. Imam en precej dolg query, kateri išče v večih tabelah in različnih stolpcih. Iščem prek operatorja LIKE. Se pravi uporabnik vpiše ključno besedo, query pa išče preko LIKE za ta niz. Težava je v tem ker lahko jaz vpišem ključno besedo "ključna beseda" ampak query bo v tem primeru iskal samo "ključna beseda". Rad pa bi dosegel da bo iskal tudi "beseda ključna" se pravi da ne upošteva vrstnega reda, ampak preveri kar za vse kombinacije. Zanima me predvsem ali obstaja kak parameter v mySQL, ker prilagajat query-je ne bo šlo, ker ne vem koliko ključnih besed bo končni uporabnik vpisal.

Poldi112 ::

OR?
Where all think alike, no one thinks very much.
Walter Lippmann, leta 1922, o predpogoju za demokracijo.

Old Spice ::

Trenutno že imam takole:

keyword: "A B C D" (recimo da vpiše uporabnik štiri besede)
keyword: "A%B%C%D" (dodam %)

query: ...WHERE stolpec1 LIKE keyword OR stolpec2 LIKE keyword OR ...

Težko bi zdaj še znotraj keyword-a to razbijal na OR, ker tudi ne vem število besed + query je kompleksen :S

Sem mislil če obstaja že vrajena komanda da vrstni red ignorira oz. preveri vse opcije.

DeeJay ::

pozab na iskanje z mysql in si poglej http://sphinxsearch.com, ki ga integriraš v MySQL. Ta omogoča točno vse to kar si želiš.

Z Mysql boš moral vse možne kombinacije iskanja dodati v query z OR:
naprimer za 3 besede: WHERE text LIKE '%word1%word2%word3%' OR text LIKE '%word1%word3%word2%' OR text LIKE '%word2%word1%word3%' OR text LIKE '%word2%word3%word1%' ....
in to postane nemogoče takoj, ko maš več besed.

Poldi112 ::

Pa ne vem, jaz sem sicer bolj amater na področju programiranja, ampak v aplikaciji, ki sem jo spisal, dinamično generiram query-je s php-jem. Pač, razbiješ na besede in iz njih sestaviš pogoj.
Where all think alike, no one thinks very much.
Walter Lippmann, leta 1922, o predpogoju za demokracijo.

DeeJay ::

Poldi112 je izjavil:

Pa ne vem, jaz sem sicer bolj amater na področju programiranja, ampak v aplikaciji, ki sem jo spisal, dinamično generiram query-je s php-jem. Pač, razbiješ na besede in iz njih sestaviš pogoj.


Ja sam potem boš vedno dobil rezultate za vsako besedo posebej in jih boš težko relevantno razporedil. Sphinx to vse omogoča... je neke vrste google search, ki ti vrne rezultate po relevanci in ga tud ni neki težko integrirat. Rabiš samo root dostop do serverja in seveda voljo.

Poldi112 ::

Zakaj za vsako posebej? Naredim explode in potem loop čez vrednosti - nekaj v stilu $query_string .= " OR polje LIKE $data[$i]", na koncu pa še odbiješ prvi " OR" in je to to.

Drugače ti pa čisto verjamem, da je Sphinx bolj elegantna rešitev.
Where all think alike, no one thinks very much.
Walter Lippmann, leta 1922, o predpogoju za demokracijo.

DeeJay ::

Poldi112 je izjavil:

Zakaj za vsako posebej? Naredim explode in potem loop čez vrednosti - nekaj v stilu $query_string .= " OR polje LIKE $data[$i]", na koncu pa še odbiješ prvi " OR" in je to to.

Drugače ti pa čisto verjamem, da je Sphinx bolj elegantna rešitev.


narobe si me razumel.
Mislil sem, da v tvojem primeru dobiš vse rezultate za vsako iskano besedo.
Naprimer iščeš: gta xbox 360
in boš dobil vse rezultate, kjer bodo vsebovane besede gta, xbox, 360. Želiš si pa seveda, da so rezultati, ki vsebujejo vse tri besede, prikazani najvišje. To je pa potem možno edino z loopi, preverjanjem in sortiranjem.
No sphinx pač to že vse zna... in še mnogo več... recimo iščeš "Can't touch this" med več kot 10 miljoni besedil pesmi in dobiš rezultate v nekaj desetinkah :) Mysql bi za to rabu kak teden :P

Poldi112 ::

U, zdaj si mi pa vzbudil interes do te mere, da si bom dejansko malo pogledal tole stvar.
Where all think alike, no one thinks very much.
Walter Lippmann, leta 1922, o predpogoju za demokracijo.

DeeJay ::

ne bo ti žal :) če boš mel kak problem pri namestitvi pa kr vpraši... najboljš na ZS, da ne spemamo teme :)


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

levenshtein distance

Oddelek: Programiranje
122096 (1583) windigo
»

Rewrite URLja (apache)

Oddelek: Izdelava spletišč
8957 (877) levaky
»

pc nov ali po delih?? (strani: 1 2 )

Oddelek: Kaj kupiti
854417 (3425) demon#666
»

Kako do podatka v queryu iz VisualBasicScripta (VBA) v accessu?

Oddelek: Programiranje
112168 (2053) Fim
»

Kako zaceti z PHP in MySQL

Oddelek: Programiranje
222437 (2141) simon

Več podobnih tem