[ASP] Search website voor eigen files.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • SiXke
  • Registratie: September 2003
  • Laatst online: 30-11-2024
Hallo

Ik ben al een tijdje bezig met vb.net (niet professioneel, gewoon als hobby) en ik wou eens ASP proberen.

Wat ik wil maken is een soort google voor men eigen disk.

Dus ik heb een soort index nodig om in te zoeken.

Ik had gedacht om een array te maken, en daar alle files in te laden, en deze te refreshen op bepaalde momenten.

De vraag is, gaat dit performant blijven bij 100.000+ items in de array? Of moet ik dit op een andere manier aanpakken?

Thx

Acties:
  • 0 Henk 'm!

Verwijderd

Semi off-topic: http://desktop.google.com/
On-topic: De vraag is maar helemaal wat je precies wilt indexeren. Enkel bestandsnamen? Of ook informatie over de inhoud? etc, etc, etc.

Acties:
  • 0 Henk 'm!

  • SiXke
  • Registratie: September 2003
  • Laatst online: 30-11-2024
Jaja ik weet dat het bestaat :) Tis omdat ik er andere dingen wil mee doen :)

Gewoon de filename is voldoende, zou dit dan gaan met 100.000+ items?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
SiXke schreef op zondag 21 november 2010 @ 20:21:
Gewoon de filename is voldoende, zou dit dan gaan met 100.000+ items?
Doe eens gek en probeer het eens :?

Maar ik zou me ook eens gaan bedenken hoe je die array wil gaan persisten. En dan kom je al gauw uit op iets als een DB; MSSQL (Express) of MySQL zijn dan (in het geval van filenamen) voor de hand liggend om relatief snel bestanden uit die massa data te plukken.

[ Voor 24% gewijzigd door RobIII op 21-11-2010 22:08 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • _Erikje_
  • Registratie: Januari 2005
  • Laatst online: 17-09 12:57

_Erikje_

Tweaker in Spanje

RobIII schreef op zondag 21 november 2010 @ 22:07:
[...]

Doe eens gek en probeer het eens :?

Maar ik zou me ook eens gaan bedenken hoe je die array wil gaan persisten. En dan kom je al gauw uit op iets als een DB; MSSQL (Express) of MySQL zijn dan (in het geval van filenamen) voor de hand liggend om relatief snel bestanden uit die massa data te plukken.
100k elementen kan je gemakkelijk in memory opslaan. die paar meg RAM ga je toch niet missen. Het indexeren gaat sowieso de eerste keer tijd kosten...

mooier is natuurlijk om het in een key-value store op te slaan: google eens op NO SQL of couchDB of mongoDB.

Acties:
  • 0 Henk 'm!

Verwijderd

code:
1
dir c:\windows\*.* /a /s
...

70,548 bestanden
52,258 mappen

En dit is dan slechts Windows.

Ik zou het sowieso niet met domweg 'een array' doen. Je moet het toch echt iets robuuster aanpakken.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
_Erikje_ schreef op zondag 21 november 2010 @ 22:16:
[...]

100k elementen kan je gemakkelijk in memory opslaan. die paar meg RAM ga je toch niet missen. Het indexeren gaat sowieso de eerste keer tijd kosten...
En juist om elke keer her-indexeren te voorkomen wil je die array gaan persisten ;)
_Erikje_ schreef op zondag 21 november 2010 @ 22:16:
mooier is natuurlijk om het in een key-value store op te slaan: google eens op NO SQL of couchDB of mongoDB.
Dat is helemaal niet mooier; welk voordeel biedt een NoSQL oplossing hier boven een "normaal" RDBMS volgens jou dan :? NoSQL is niet "het nieuwe alleskunnend wonder" ofzo hoor ;) Daarbij gaf ik aan: "iets als een DB"; je kunt die array natuurlijk ook prima in een binary file flikkeren om maar wat te noemen. Het is nogal afhankelijk van wat je met die data wil gaan doen, hoe je 'm wil gaan benaderen/doorzoeken/etc wat uiteindelijk bepaalt hoe (en of) je die zaken gaan opslaan.

[ Voor 19% gewijzigd door RobIII op 21-11-2010 22:25 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • _Erikje_
  • Registratie: Januari 2005
  • Laatst online: 17-09 12:57

_Erikje_

Tweaker in Spanje

dat je moet persisteren is mij ook duidelijk, het is misschien niet teruggekomen in mijn post....

nosql wordt door andere misschien gezien als de nieuwe alleskunner maar dat is het in veel zaken niet. hier kan je het leuk toepassen omdat je geen uitgebreide relaties hebt (alleen filename-->location) waardoor je het makkelijk in een key-value structuur kan gieten.

op 100k entries zal het qua snelheid niets uitmaken natuurlijk. wat je er wel mee wint is dat je je verdiept in nieuwe projecten en een andere denkwijze van persisteren van data.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
_Erikje_ schreef op zondag 21 november 2010 @ 23:22:
nosql wordt door andere misschien gezien als de nieuwe alleskunner maar dat is het in veel zaken niet. hier kan je het leuk toepassen omdat je geen uitgebreide relaties hebt (alleen filename-->location) waardoor je het makkelijk in een key-value structuur kan gieten.
En een tabel met als key "filename" (/etc/my/path/myfile.conf) en value "filesize" (1283) is dat niet? Nogmaals: Wat is het voordeel van een NoSQL hier?
_Erikje_ schreef op zondag 21 november 2010 @ 23:22:
wat je er wel mee wint is dat je je verdiept in nieuwe projecten en een andere denkwijze van persisteren van data.
Ik heb een blogpost op stapel staan waarin ik het aanmoedig dat devvers met regelmaat moeten 'stoeien' of 'flirten' met nieuwe technieken (maar daar heb je nu niets aan zolang 'ie nog niet af is :P ). Maar als TS net bezig is ASP te ontdekken en van plan is files in een array te mikkeren dan lijkt NoSQL me nog even een brug te ver.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • _Erikje_
  • Registratie: Januari 2005
  • Laatst online: 17-09 12:57

_Erikje_

Tweaker in Spanje

RobIII schreef op zondag 21 november 2010 @ 23:28:
[...]

En een tabel met als key "filename" (/etc/my/path/myfile.conf) en value "filesize" (1283) is dat niet? Nogmaals: Wat is het voordeel van een NoSQL hier?
een database heeft hier sowieso geen voordelen. het is veel makkelijker om het in een (csv) file op te slaan. ik breng het nosql punt aan omdat mensen te snel naar een RDBMS grijpen voor de meest simpele dingen (ja met de grootste hamer past alles O-) ).
RobIII schreef op zondag 21 november 2010 @ 23:28:
Ik heb een blogpost op stapel staan waarin ik het aanmoedig dat devvers met regelmaat moeten 'stoeien' of 'fliteren' met nieuwe technieken (maar daar heb je nu niets aan zolang 'ie nog niet af is :P ).
* _Erikje_ is interested!!!
RobIII schreef op zondag 21 november 2010 @ 23:28:
Maar als TS net bezig is ASP te ontdekken en van plan is files in een array te mikkeren dan lijkt NoSQL me nog even een brug te ver.
true. maar is het leren van sql en installatie van mysql niet even lastig (misschien wel lastiger)?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
_Erikje_ schreef op zondag 21 november 2010 @ 23:37:
ik breng het nosql punt aan omdat mensen te snel naar een RDBMS grijpen
Mensen grijpen te snel naar een RDBMS en dus is NoSQL daar de oplossing voor :? Rare redenatie :P
_Erikje_ schreef op zondag 21 november 2010 @ 23:37:
true. maar is het leren van sql en installatie van mysql niet even lastig (misschien wel lastiger)?
Als hij met Visual Studio aan de gang is moet 'ie raar doen om 't (met SQL Express) niet aan de gang te krijgen ;)
_Erikje_ schreef op zondag 21 november 2010 @ 23:37:
het is veel makkelijker om het in een (csv) file op te slaan
RobIII schreef op zondag 21 november 2010 @ 22:22:
Daarbij gaf ik aan: "iets als een DB"; je kunt die array natuurlijk ook prima in een binary file flikkeren om maar wat te noemen. Het is nogal afhankelijk van wat je met die data wil gaan doen, hoe je 'm wil gaan benaderen/doorzoeken/etc wat uiteindelijk bepaalt hoe (en of) je die zaken gaan opslaan.
En wat TS ermee wil gaan doen is (AFAIK) nog helemaal niet duidelijk. Dus, TS? More info please ;)

[ Voor 65% gewijzigd door RobIII op 22-11-2010 02:27 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Laten we even iets minder hard van stapel lopen en zien wat de TS zelf te vertellen heeft. Het feit dat hij het heeft over indexeren van filenames en vervolgens wel een array noemt maar geen database lijkt me in elk geval een redelijke indicatie dat hij eerst even wat zal moeten gaan nadenken over wat hij nu eigenlijk wil. Daarnaast: ASP is op sterven na dood, ASP.NET is dat niet. Ik mag hopen dat je anno 2010 ASP.NET aan het leren bent en niet ASP. ;)

Als laatste: ASP draait op een server en kan dus niet jouw harde schijf indexeren, maar wel die van de server. Ik hoop dat je je dat beseft.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • _Erikje_
  • Registratie: Januari 2005
  • Laatst online: 17-09 12:57

_Erikje_

Tweaker in Spanje

NMe schreef op maandag 22 november 2010 @ 02:28:
Als laatste: ASP draait op een server en kan dus niet jouw harde schijf indexeren, maar wel die van de server. Ik hoop dat je je dat beseft.
De server lokaal draaien?

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-09 08:50

gorgi_19

Kruimeltjes zijn weer op :9

NMe schreef op maandag 22 november 2010 @ 02:28:
Laten we even iets minder hard van stapel lopen en zien wat de TS zelf te vertellen heeft. Het feit dat hij het heeft over indexeren van filenames en vervolgens wel een array noemt maar geen database lijkt me in elk geval een redelijke indicatie dat hij eerst even wat zal moeten gaan nadenken over wat hij nu eigenlijk wil. Daarnaast: ASP is op sterven na dood, ASP.NET is dat niet. Ik mag hopen dat je anno 2010 ASP.NET aan het leren bent en niet ASP. ;)

Als laatste: ASP draait op een server en kan dus niet jouw harde schijf indexeren, maar wel die van de server. Ik hoop dat je je dat beseft.
Hij heeft het over VB.net, dus zal hij het oook wel over ASP.Net hebben :P

Over de methodiek: als hij iedere search de items wil doorlopen, is het relatief traag (arrays zijn van nature sowieso relatief traag in .net). Het is een beetje afhankelijk wat hij een acceptabele performance vindt voor een zoekmechanisme.
Kan, maar je zal je aspnet_wp dan best een hoop rechten moeten geven, of hij zal niet alles kunnen indexeren :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • SiXke
  • Registratie: September 2003
  • Laatst online: 30-11-2024
Wooow, bedankt voor de respons al.

Ik heb het even geprobeerd met een array, en het aanmaken van de gegevens is blijkbaar geen probleem, maar ik kan er niet uit zoeken.

Mijn simpele code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Imports System.IO
Public Class _Default

    Inherits System.Web.UI.Page

    Dim arrayFiles As New ArrayList

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
       
    End Sub

    Private Sub ListFiles(ByVal pattern As String, ByVal dir_info As DirectoryInfo)
        ' Get the files in this directory.
        Try

      
        Dim fs_infos() As FileInfo = dir_info.GetFiles(pattern)
        For Each fs_info As FileInfo In fs_infos
            arrayFiles.Add(fs_info.FullName.ToString)
        Next fs_info
        fs_infos = Nothing
        
        ' Search subdirectories.
        Dim subdirs() As DirectoryInfo = _
            dir_info.GetDirectories()
        For Each subdir As DirectoryInfo In subdirs
            ListFiles(pattern, subdir)
            Next subdir
        Catch ex As Exception

        End Try
    End Sub

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
        If TextBox1.Text.Trim = "" Then
        Else
            Dim filesstring As String = ""
            For Each filesstring In arrayFiles
                If filesstring.ToLower.Contains(TextBox1.Text.Trim.ToLower) Then
                    Label2.Text = Label2.Text + vbCrLf + filesstring.ToString
                End If
            Next
        End If
    End Sub

    Protected Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click
        arrayFiles.Clear()
        Dim dir_info As New DirectoryInfo("M:\")
        ListFiles("*.*", dir_info)
               Label1.Text = "List Loaded!"
           End Sub
End Class


Mysql is mij niet ongebekend, maar de data veranderd om de paar minuten, dus dan moet hij toch gerefreshed worden, is het dan niet gemakkelijker de data vluchtig te houden in een array?

Thx

Acties:
  • 0 Henk 'm!

  • SiXke
  • Registratie: September 2003
  • Laatst online: 30-11-2024
En wat TS ermee wil gaan doen is (AFAIK) nog helemaal niet duidelijk. Dus, TS? More info please ;)
Ik wil gewoon zoeken op een disk, en dan de gevonden resultaten weergeven, meer voorlopig nog niet.

Maar de data veranderd snel, dus een refresh moet zeker kunnen.

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-09 08:50

gorgi_19

Kruimeltjes zijn weer op :9

SiXke schreef op maandag 22 november 2010 @ 19:38:
Ik heb het even geprobeerd met een array, en het aanmaken van de gegevens is blijkbaar geen probleem, maar ik kan er niet uit zoeken.

Mysql is mij niet ongebekend, maar de data veranderd om de paar minuten, dus dan moet hij toch gerefreshed worden, is het dan niet gemakkelijker de data vluchtig te houden in een array?

Thx
Zoeken en indexeren zijn twee aparte acties; die indexeerder werkt de database bij en zoeken zoekt in de database. Werken onafhankelijk van elkaar :)

Zoeken in een array kan; je hebt hier methoden als binarysearch voor. Neemt nog steeds mijn eerdere opmerking niet weg; collections in .net zijn relatief traag, vind je de performance voldoende of niet? :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • SiXke
  • Registratie: September 2003
  • Laatst online: 30-11-2024
gorgi_19 schreef op maandag 22 november 2010 @ 19:43:
[...]

Zoeken en indexeren zijn twee aparte acties; die indexeerder werkt de database bij en zoeken zoekt in de database. Werken onafhankelijk van elkaar :)

Zoeken in een array kan; je hebt hier methoden als binarysearch voor. Neemt nog steeds mijn eerdere opmerking niet weg; collections in .net zijn relatief traag, vind je de performance voldoende of niet? :)
Het werkt niet, dus over de performance kan ik nog niets zeggen.

Ik heb intussen gevonden waarom het niet werkt, ik weet alleen de oplossing niet.

Op de M drive staat een map RECYCLER, en daar heeft hij geen rechten op, dus de try word beeindigt.

Is er een mogelijkheid om deze map te negeren?

Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Nu online

Haan

dotnetter

SiXke schreef op maandag 22 november 2010 @ 19:54:
[...]


Het werkt niet, dus over de performance kan ik nog niets zeggen.

Ik heb intussen gevonden waarom het niet werkt, ik weet alleen de oplossing niet.

Op de M drive staat een map RECYCLER, en daar heeft hij geen rechten op, dus de try word beeindigt.

Is er een mogelijkheid om deze map te negeren?
De meest simpele manier is om het zo te bouwen dat je code bij een exception niet direct stopt, maar verder gaat met de volgende map. Daarvoor moet je je try/catch blok om een kleiner stukje code zetten dan je nu doet.

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • SiXke
  • Registratie: September 2003
  • Laatst online: 30-11-2024
Heb ik gedaan, maar het vreemde is nu, dat de array wel wordt geladen met data, maar als ik er dan in wil zoeken is hij leeg. Mis ik hier iets?

Ik heb dit gezet om te checken of er iets in zit:
code:
1
 Label1.Text = Label1.Text + "List Loaded!" + arrayFiles.Count.ToString


en dan op de zoek knop:
code:
1
 Label1.Text = Label1.Text + "List Searched!" + arrayFiles.Count.ToString


Eerst is de count 131000, dan 0.

Verdwijnt data in ASP? :)

Edit:

Ik vond dit:
If you do not persist the ArrayList (in the Session or Cache) or re-populate it, then, yes, it will be cleared each time you post back.

Can you either repopulate it each time in Page_Load, or store it in the session or cache?
Wat willen ze daarmee zeggen, storen in session or cache?

Edit2: Gevonden :)

Vraagje:

Is het mogelijk om een soort loadbalkje te hebben als mijn array ingelezen worden? Of is dit niet mogelijk in ASP?

[ Voor 34% gewijzigd door SiXke op 22-11-2010 21:46 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Als je nu begint met leren hoe webdevelopment (en dan met name persistentie tussen requests) werkt dat hoef je niet bij elke kleine hobbel een vraag te stellen. Hint: HTTP is stateless. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-09 08:50

gorgi_19

Kruimeltjes zijn weer op :9

SiXke schreef op maandag 22 november 2010 @ 20:11:
Is het mogelijk om een soort loadbalkje te hebben als mijn array ingelezen worden? Of is dit niet mogelijk in ASP?
Je moet de data gaan pollen. ASP.net is stateless, zoals NMe al zei. :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1