Toon posts:

[ASP]

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met een zoekfunctie voor mijn internetpagina: http://62.251.28.184/test

Als een gebruiker een bepaalde string invoert om te gaan zoeken, wordt die string opgesplitst in woorden en wordt er op alle woorden (AND) gezocht in de (access) database. Het volgende is mijn probleem: Hoe kan ik de resultaten ordenen, zodat het resultaat dat het meest overeenkomt het eerst wordt getoond en zo verder?

Om het geheel wat te verduidelijken volgt hieronder een stukje script:

Dim searchwordsarray
searchwordsarray=Split(Trim(searchval)," ")

x=0
sql="select * from scripts where approved='YES' and (scriptname like '%"& searchwordsarray(0) &"%' "
For x=1 to UBound(searchwordsarray)
sql=sql & "and scriptname like '%"& searchwordsarray(x) &"%' "
x=x+1
Next
x=0
sql=sql & "or description like '%"& searchwordsarray(0) &"%' "
For x=1 to UBound(searchwordsarray)
sql=sql & "and description like '%"& searchwordsarray(x) &"%' "
x=x+1
Next
sql=sql & "or author like '%"& searchval &"%')"


Ik hoop dat iemand het weet, want op aspin.com en hotscripts kon ik ook al niks vinden.

Mvg,

Mark.

  • whoami
  • Registratie: December 2000
  • Laatst online: 19:58
Hoi, leuke titel.. :/

Op de manier waarop jij het doet, niet vrees ik...

PS: lees even de P&W Quickstart.

https://fgheysels.github.io/


Verwijderd

Allemaal 100% want als een van de zoektermen niet voorkomt komt ie niet niet in je result set.

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 31-03 16:47

CyberSnooP

^^^^ schrijft --->

Ingewikkeld probleem, veel over verteld en geschreven.
Voor kleine toepassingen kun je misschien volstaan door een eigen index te maken van de woorden die er in voorkomt en aan de hand van het aantal hits in die index een relevantie index te maken. (index bedoel ik als: tabel met bijv. de velden woord, in_veld, in_id, aantal_voorkomens).

Met een enkelvoudig query in de vorm die je nu hebt ga je er niet echt uitkomen vrees ik.
Verwijderd schreef op 26 september 2002 @ 20:36:
Allemaal 100% want als een van de zoektermen niet voorkomt komt ie niet niet in je result set.
Volgens mij is bijv Google (of http://www.Kartoo.com, mijn nieuwe favoriet) (die ook standaard AND) heel goed in staat om een relevantie-ordening aan te brengen.

|_____vakje______|


Verwijderd

Topicstarter
Dat wel, maar bij het ene result komt een keyword vaker voor dan bij het andere. Kan ik daar niet iets mee doen? Is er anders een manier waarop het wel kan, behalve dan dat er op 'any word' wordt gezocht?

P.S.: Sorry van die titel. Was niet de bedoeling.

Verwijderd

Indexserver gebruiken misschien? Daar kwakkel je in ene keer je complete search in. Is dat niet gewoon een oplossing. Btw als je een * gebruikt in de select query dan gaat je performance achteruit, zeker met een behoorlijke load. Het is(als je alle velden wilt hebben) verstandig om de namen gewoon in de je query te zetten. Met een * moet sql eerst kijken welke veldnamen er in een tabel staan. kleinigheidje.

[ Voor 0% gewijzigd door Verwijderd op 27-09-2002 13:19 . Reden: tja tik foutje ]


Verwijderd

Topicstarter
Kun je eens uitleggen hoe dat in z'n werk gaat met zo'n indexserver?
Pagina: 1