Avatar billede wandaxp Praktikant
02. september 2007 - 23:22 Der er 9 kommentarer og
1 løsning

Advanceret søgning i database

Jeg er ved at lave en søgefunktion på en side, mne har aldrig arbejdet med søgning i den stil før?

Det jeg vil lave er når man i et felt taster forskellige ord så skal den tage stregen med over i en ny side som laver en request.form("soeg") den skal så kun tage alle ord og tal i den sammenhæng de er i dvs. den skal droppe alt der er tegn, symboler og mellemrum og kun gemme ordrene
Har en skrevet: rød maling, V2356???
skal den kun gemme dette
rød
maling
V2356
og så søge med %like%

I databasen har jeg flere felter: Varenr, Fabrikat, Beskriv100 og Beskriv.
Varenr: har et unikt nr.
Fabrikat: er Fabrikat navnet på varen kan være 1 eller 2 ord
Beskriv100: er en kort beskrivelse af varen
Beskriv: er en lang beskrivelse af varen

Har skal den på dem alle bortset fra Varenr og gå ind og fjerne alle tegn og mellemrum så den kan finde teksten i en beskrivelse eller ved søgning på en fabrikat og så må den gerne liste dem efter dem der har flest resultater?

Jeg har søgt efter flere mulige løsninger men kan ikke rigtigt finde nogen eksempler på dette? Så er der en der kan hjælpe her?
Avatar billede bramsing Nybegynder
03. september 2007 - 00:19 #1
Du fjerner ??? med replace(request.form("soeg"),"?","")
Avatar billede bramsing Nybegynder
03. september 2007 - 00:22 #2
Derudover mener jeg at du skal bruge instr i stedet for %like% men jeg er lidt kokset lige nu til at lave et eksempel... Men måske du kan søge lidt på det og på den måde komme lidt videre ;-)
Avatar billede fennec Nybegynder
03. september 2007 - 10:10 #3
bramsing >>
Tror nok wandaxp mener at søgningen skal forgå i databasen hvorfor en like '%%' er helt rigtig at bruge.

wandaxp >>
Det skulle ikke være et problem at få klippet søge-teksten så du kun har ordne tilbage, men jeg er ikke med på hvordan du vil have dem ind i SQL'en. Kan du ikke give et eks på hvordan den færdige SQL skal se ud (hvis du altså kan)?? Lad være med at tænke på hvordan det gøres i ASP, jeg vil bare gerne se det ønskede resultat. Noget i denne stil:

select .... where (Beskriv100 like '%V2356%' or Beskriv100 like '%rød%' or Beskriv100 like '%maling%' ... osv...)
Avatar billede wandaxp Praktikant
03. september 2007 - 21:57 #4
I ASP laves der en løkke der tilføjer alle værdierne fra søgefeltet til en del af sql stregen.
Herefetr forestiller jeg mig SQL stregen se ud lidt alla :

str="(Beskriv100 like " & VaerdiNr0 & " OR "Beskriv like " & VaerdiNr0 & " OR "VareNr like " & VaerdiNr0
For i=1 to AntalISoegefelt do
  "OR Beskriv100 like " & VaerdiNrX & " OR "Beskriv like " & VaerdiNrX & " OR "VareNr like " & VaerdiNrX
next

Select * from Varer where " & str & ") SORT BY flest passende ord

Det er noegt i den stil men har som sagt ikke rigtigt rodet med søgninger før?
Avatar billede fennec Nybegynder
04. september 2007 - 10:15 #5
Noget i denne stil:
search = "rød maling, V2356???"
set RX = New RegExp
RX.Global = True
RX.IgnoreCase = True
RX.Pattern = "[^\wæøåÆØÅ ]"
search = RX.replace(search,"")
searchArr = split(search," ")

sql = "select * from dinTabel where 1=2 "
for f=0 to ubound(searchArr)
    sql = sql & " or (Beskriv100 like '%"& searchArr(f) &"%' or Beskriv like '%"& searchArr(f) &"%' OR VareNr like '%"& searchArr(f) &"%') "
next
Avatar billede fennec Nybegynder
04. september 2007 - 10:16 #6
Jeg har bruget regexp til at fjerne alle uvelkommen tegn fra søge strengen.
Avatar billede wandaxp Praktikant
06. september 2007 - 22:15 #7
Jeg er ikke helt med på dette?

sql = "select * from dinTabel where 1=2 "
Avatar billede wandaxp Praktikant
06. september 2007 - 22:47 #8
ahh ok, jeg har fudnet idenen i den men mangler dog relevans sorteringen så den først viser dem hvor der er flest positive resultater på :-)
Avatar billede fennec Nybegynder
07. september 2007 - 08:20 #9
relevans sorteringen har jeg ingen ide om hvordan laves. Kunne forstille mig at man skal have fat i de advanceret funktioner på databasen for at lave dem.

Det vil jeg forslå du tager op i den kategori, som svare til din database (Access, MySQL eller hvad du nu bruger)
Avatar billede fennec Nybegynder
07. september 2007 - 11:02 #10
Og et svar
.o) <-- One Eyed Jack
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester