/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Hvordan laves smartest en "Alert" funktion~
Fra : Morten Borg


Dato : 10-01-01 18:21

Hej,

Er der nogen der har en god ide til hvordan man mest optimalt laver en
funktion der giver nogle brugere besked når det tilføjet noget der
indeholder af af fx. 5 søgeord brugeren har valgt?
Altså noget à la dette: http://www.computerworld.dk/newsalert.asp

Er det smarteste at lave et array over de unikke ord folk har valgt og så se
om nogen af disse er i den nye besked - og i så fald laves et database
opslag for at finde e-mail adresserne på dem der skal have besked?

Venlig hilsen
Morten


 
 
Lauritz Jensen (10-01-2001)
Kommentar
Fra : Lauritz Jensen


Dato : 10-01-01 21:16

Morten Borg wrote:
>
> Er der nogen der har en god ide til hvordan man mest optimalt laver en
> funktion der giver nogle brugere besked når det tilføjet noget der
> indeholder af af fx. 5 søgeord brugeren har valgt?
> Altså noget à la dette: http://www.computerworld.dk/newsalert.asp
>
> Er det smarteste at lave et array over de unikke ord folk har valgt og så se
> om nogen af disse er i den nye besked - og i så fald laves et database
> opslag for at finde e-mail adresserne på dem der skal have besked?

Det skal jo nok ikke være et array (det ligger jo i hukommelsen), det
skal nok være en tabel.
Men nu kunne jo lave 3 tabeller: Word (med felterne: w_id, w_word), user
(med felterne: u_id, u_email, u_password ...) og w_u (med felterne:
w_id, u_id).

Når du så laver en ny artikkel kunne du lave en søgning som denne:
sql = ""
sql = sql & "SELECT DISTINCT user.u_id, user.u_email "
sql = sql & "FROM word "
sql = sql & "INNER JOIN w_u ON word.w_id=w_u.w_id "
sql = sql & "INNER JOIN user ON w_u.u_id=user.u_id "
sql = sql & "WHERE " & dennyetekst & " LIKE '%' + word.w_word + '%' "
Som finder alle de email adresser, som der skal sendes mail til.

--
Lauritz

MacMac (10-01-2001)
Kommentar
Fra : MacMac


Dato : 10-01-01 22:44

I brevet "3A5CC31C.A90E0057@hotmail.com" skrev Lauritz Jensen
(lauritz2@hotmail.com) den 10/01/01 21:16:

> Morten Borg wrote:
>>
>> Er der nogen der har en god ide til hvordan man mest optimalt laver en
>> funktion der giver nogle brugere besked når det tilføjet noget der
>> indeholder af af fx. 5 søgeord brugeren har valgt?
>> Altså noget à la dette: http://www.computerworld.dk/newsalert.asp
>>
>> Er det smarteste at lave et array over de unikke ord folk har valgt og så se
>> om nogen af disse er i den nye besked - og i så fald laves et database
>> opslag for at finde e-mail adresserne på dem der skal have besked?
>
> Det skal jo nok ikke være et array (det ligger jo i hukommelsen), det
> skal nok være en tabel.
> Men nu kunne jo lave 3 tabeller: Word (med felterne: w_id, w_word), user
> (med felterne: u_id, u_email, u_password ...) og w_u (med felterne:
> w_id, u_id).
>
> Når du så laver en ny artikkel kunne du lave en søgning som denne:
> sql = ""
> sql = sql & "SELECT DISTINCT user.u_id, user.u_email "
> sql = sql & "FROM word "
> sql = sql & "INNER JOIN w_u ON word.w_id=w_u.w_id "
> sql = sql & "INNER JOIN user ON w_u.u_id=user.u_id "
> sql = sql & "WHERE " & dennyetekst & " LIKE '%' + word.w_word + '%' "
> Som finder alle de email adresser, som der skal sendes mail til.

Problemet er bare som jeg ser det, at hvis den tekst der bliver tilføjet
inderholder fx. 200 ord, ja så skal der laves et opslag for hvert ord og det
holder jo ikke rigtig vand. Det hurtigste er vel at lave, som nævnt, et
array (ud fra db'en) med alle de UNIKKE ord der er, og gennem en alm.
inStr() kan man så finde de ord, hvis nogen, der er i teksten og så kun for
dem lave et opslag vha. en DISTINCT og en række OR's.

Altså pseudo:

Array = Array("ord1", "ord2", "ord3") 'Unikke ord fra søgeords tabellen.
Tekst = "Dette er en ny artikler med ord2 og ord3, test test.")

Lidt inStr() og resultatet:

OrdDerFindes = Array("ord2", "ord3")

->

SELECT DISTINCT UserEmail
FROM Brugere
WHERE Soegeord.BrugerID = Brugere.ID AND
(Soegeord.Ord = '"& Ord2 &"' OR
Soegeord.Ord = '"& Ord3 &"')


Eller hvad?


Venlig hilsen
Morten


Lauritz Jensen (10-01-2001)
Kommentar
Fra : Lauritz Jensen


Dato : 10-01-01 22:51

MacMac wrote:
>
> Problemet er bare som jeg ser det, at hvis den tekst der bliver
> tilføjet inderholder fx. 200 ord, ja så skal der laves et opslag
> for hvert ord og det holder jo ikke rigtig vand. Det hurtigste
> er vel at lave, som nævnt, et array (ud fra db'en) med alle de
> UNIKKE ord der er, og gennem en alm. inStr() kan man så finde de
> ord, hvis nogen, der er i teksten og så kun for dem lave et
> opslag vha. en DISTINCT og en række OR's.

Det er jo samme process som asp hhv. databasen skal igennem. Hvorfor
tror du at asp kan gøre det hurtigere end databasen?
Lille tommelfingerregel: Lad databasen håndterer data.

--
Lauritz

MacMac (10-01-2001)
Kommentar
Fra : MacMac


Dato : 10-01-01 23:37

I brevet "3A5CD95E.27E80E8C@hotmail.com" skrev Lauritz Jensen
(lauritz2@hotmail.com) den 10/01/01 22:51:

> MacMac wrote:
>>
>> Problemet er bare som jeg ser det, at hvis den tekst der bliver
>> tilføjet inderholder fx. 200 ord, ja så skal der laves et opslag
>> for hvert ord og det holder jo ikke rigtig vand. Det hurtigste
>> er vel at lave, som nævnt, et array (ud fra db'en) med alle de
>> UNIKKE ord der er, og gennem en alm. inStr() kan man så finde de
>> ord, hvis nogen, der er i teksten og så kun for dem lave et
>> opslag vha. en DISTINCT og en række OR's.
>
> Det er jo samme process som asp hhv. databasen skal igennem. Hvorfor
> tror du at asp kan gøre det hurtigere end databasen?
> Lille tommelfingerregel: Lad databasen håndterer data.

Fordi enten indebærer dit forslag, som jeg forstår det, enten en frygtelig
masse SQL eksekveringer eller en med en frygtelig masse OR's (da den
tilføjede tekst jo indeholder mange ord). Og det første vil genere min
blindtarm, og en frygtelig masse OR's går forbløffende langsomt med SQL
Server - derfor vil jeg ikke spilde tid tjeck af ord der alligevel ikke er
der.

Venlig hilsen
Morten


Lauritz Jensen (10-01-2001)
Kommentar
Fra : Lauritz Jensen


Dato : 10-01-01 23:45

MacMac wrote:
>
> Fordi enten indebærer dit forslag, som jeg forstår det, enten en frygtelig
> masse SQL eksekveringer eller en med en frygtelig masse OR's (da den
> tilføjede tekst jo indeholder mange ord). Og det første vil genere min
> blindtarm, og en frygtelig masse OR's går forbløffende langsomt med SQL
> Server - derfor vil jeg ikke spilde tid tjeck af ord der alligevel ikke er
> der.

Der vil da ikke blive genereret en masse or'er (der er ikke et eneste or
i min kode (og jeg ser igen grund til at optimizeren skulle generer
dem)) og der bliver heller ikke udført "en frygtelig masse SQL
eksekveringer", der bliver udført netop én (det er netop fordelen: at
holde beregningerne der hvor data er tilgængelig i forvejen).
Jeg forstår statig ikke hvorfor du tror, asp magisk kan gøre det
hurtigere end databasen? Begge skal de jo checke om et eller flere af
ordene forkommer i teksten. (Jeg siger ikke, at det ikke kan optimeres,
men i de to foreslåede løsninger, ser jeg ikke hvorfor asp skal være
hurtigst)

--
Lauritz

MacMac (11-01-2001)
Kommentar
Fra : MacMac


Dato : 11-01-01 00:04

I brevet "3A5CE5F7.3ED62F73@hotmail.com" skrev Lauritz Jensen
(lauritz2@hotmail.com) den 10/01/01 23:45:

> MacMac wrote:
>>
>> Fordi enten indebærer dit forslag, som jeg forstår det, enten en frygtelig
>> masse SQL eksekveringer eller en med en frygtelig masse OR's (da den
>> tilføjede tekst jo indeholder mange ord). Og det første vil genere min
>> blindtarm, og en frygtelig masse OR's går forbløffende langsomt med SQL
>> Server - derfor vil jeg ikke spilde tid tjeck af ord der alligevel ikke er
>> der.
>
> Der vil da ikke blive genereret en masse or'er (der er ikke et eneste or
> i min kode (og jeg ser igen grund til at optimizeren skulle generer
> dem)) og der bliver heller ikke udført "en frygtelig masse SQL
> eksekveringer", der bliver udført netop én (det er netop fordelen: at
> holde beregningerne der hvor data er tilgængelig i forvejen).
> Jeg forstår statig ikke hvorfor du tror, asp magisk kan gøre det
> hurtigere end databasen? Begge skal de jo checke om et eller flere af
> ordene forkommer i teksten. (Jeg siger ikke, at det ikke kan optimeres,
> men i de to foreslåede løsninger, ser jeg ikke hvorfor asp skal være
> hurtigst)

Jeg har bare lidt svært ved at se, hvordan den kode du forslår skulle kunne
tjekke for om bare ét af 200 forskellige ord forekommer i "Word" tabellen.
Som jeg ser det, tjekker du med den SQL sætning kun for et ord.

Venlig hilsen
Morten


Lauritz Jensen (11-01-2001)
Kommentar
Fra : Lauritz Jensen


Dato : 11-01-01 00:11

MacMac wrote:
>
> Jeg har bare lidt svært ved at se, hvordan den kode du forslår skulle kunne
> tjekke for om bare ét af 200 forskellige ord forekommer i "Word" tabellen.
> Som jeg ser det, tjekker du med den SQL sætning kun for et ord.

Nååe... Jeg tror du har misforstået koden. Word-tabellen indeholder alle
de forskellige nøgleord, som alle brugerne gerne vil finde (dvs. hvert
ord forekommer kun en gang i word-tabellen). User-tabellen indeholder
brugerne (doh! :). w_o-tabellen indeholder en relation fra hver bruger
til alle de ord, som brugeren er interesseret i.
I eksemplet indeholder variablen "dennyetekst" (ta-taa) den nye tekst
(altså hele den nye artikkel).

--
Lauritz

MacMac (13-01-2001)
Kommentar
Fra : MacMac


Dato : 13-01-01 16:26

I brevet "3A5CEC18.D40D9C56@hotmail.com" skrev Lauritz Jensen
(lauritz2@hotmail.com) den 11/01/01 0:11:

> MacMac wrote:
>>
>> Jeg har bare lidt svært ved at se, hvordan den kode du forslår skulle kunne
>> tjekke for om bare ét af 200 forskellige ord forekommer i "Word" tabellen.
>> Som jeg ser det, tjekker du med den SQL sætning kun for et ord.
>
> Nååe... Jeg tror du har misforstået koden. Word-tabellen indeholder alle
> de forskellige nøgleord, som alle brugerne gerne vil finde (dvs. hvert
> ord forekommer kun en gang i word-tabellen). User-tabellen indeholder
> brugerne (doh! :). w_o-tabellen indeholder en relation fra hver bruger
> til alle de ord, som brugeren er interesseret i.
> I eksemplet indeholder variablen "dennyetekst" (ta-taa) den nye tekst
> (altså hele den nye artikkel).

Ohhh... ja, så havde jeg ikke forstået det rigtigt, det må jeg prøve.
Takker! :)

Venlig hilsen
Morten


Søg
Reklame
Statistik
Spørgsmål : 177557
Tips : 31968
Nyheder : 719565
Indlæg : 6408868
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste