Ik zit met het volgende probleem, ik ben een zoek machine aan het maken die naar bestanden zoekt. Deze bestanden worden aangeboden door meerdere servers, via enkele protocollen (SMB en FTP hoofdzakkelijk).
Het probleem zit 'em in de opslag van deze data. Het is de bedoeling dat files met dezelfde naam maar een keer worden opgeslagen met een lijst van paden waar deze files staan. Ik werkte eerst met een Mysql database (tevens Postgres geprobeerd), maar beide voldoen niet aan mijn eisen wat betreft het zoeken. Ze bieden namelijk beide fulltext search aan (Postgress met behulp van Tsearch2), maar zijn niet in staat een gedeeltelijke match te doen. Zoek je bijvoorbeeld op "abc" dan zal een bestand met de aan abcd.zip niet gevonden worden. Ik heb die opgelost door de gehele DB te dumpen in een bestand, en vervolgens in het geheugen te laden. Momenteel zoek ik daar in met het Boyer Moore algoritme, dit gaat prima.
Anyway, ik zit nu dus met de opslag van de gegevens. Ze moeten namelijk makkelijk in te lezen zijn, maar ook makkelijk up te daten. Een database is het eerste waar ik aan dacht, maar dat maakt het indexeren vrij zwaar vanwege de eis dat elke bestandsnaam er maar een keer in voor mag komen. Ik kan ook alles in een of meerdere bestanden opslaan, maar dat is weer vrij moeilijk met onderhoud. Het verwijderen van een computer uit de index wordt dan bijvoorbeeld virj lastig.
Dus, wat zijn jullie gedachten hierover?
Het probleem zit 'em in de opslag van deze data. Het is de bedoeling dat files met dezelfde naam maar een keer worden opgeslagen met een lijst van paden waar deze files staan. Ik werkte eerst met een Mysql database (tevens Postgres geprobeerd), maar beide voldoen niet aan mijn eisen wat betreft het zoeken. Ze bieden namelijk beide fulltext search aan (Postgress met behulp van Tsearch2), maar zijn niet in staat een gedeeltelijke match te doen. Zoek je bijvoorbeeld op "abc" dan zal een bestand met de aan abcd.zip niet gevonden worden. Ik heb die opgelost door de gehele DB te dumpen in een bestand, en vervolgens in het geheugen te laden. Momenteel zoek ik daar in met het Boyer Moore algoritme, dit gaat prima.
Anyway, ik zit nu dus met de opslag van de gegevens. Ze moeten namelijk makkelijk in te lezen zijn, maar ook makkelijk up te daten. Een database is het eerste waar ik aan dacht, maar dat maakt het indexeren vrij zwaar vanwege de eis dat elke bestandsnaam er maar een keer in voor mag komen. Ik kan ook alles in een of meerdere bestanden opslaan, maar dat is weer vrij moeilijk met onderhoud. Het verwijderen van een computer uit de index wordt dan bijvoorbeeld virj lastig.
Dus, wat zijn jullie gedachten hierover?