29. januar 2003 - 15:35Der er
7 kommentarer og 1 løsning
Søgning i fil-index
Problemstillingen er følgende:
Jeg har et antal nummererede tekststrenge (typisk 5,000-50,000 stk). Jeg ønsker at søge i disse tekststrenge, dvs. givet et søgeord, ønsker jeg alle de nummeret på alle de tekststrenge som søgeordet optræder i.
Jeg ønsker endvidere at kunne tilføje nye tekststrenge og fjerne tekststrenge hurtigt. Desuden må datastrukturen ikke fylde for meget i hukommelsen.
Så vidt jeg har kunnet finde frem til er det mest optimalt at basere algoritmen på et "compressed suffix tree".
Jeg ønsker en færdig implementation af denne algoritme, men jeg har ikke kunnet finde noget på Google.
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Hvis du skal have færdige løsninger er eksperten ikke stedet, vi løser ikke folks komplexe opgaver for point. Der skal penge på bordet istedet, og det må man ikke på Experten.
Men opgaven er stor. Der er C kode tilgængelig på nettet. Og den kan selvfølgelig konverteres til Java. Men for at kunne konvertere korrekt skal man nok kende ideen bag algoritmen rimeligt. Og det tager tid at sætte sig ind i (og der er næppe mange som har den viden på forhånd).
Jeg ønsker skam heller ikke at der er nogen her der laver en løsning til mig. Jeg ville bare gerne vide om der er nogen der kender til en publiceret implementation af denne algoritme i java. Beklager misforståelsen.
Men det ender nok med at jeg må til at konvertere C kode, desværre - eller bygge det op fra bunden. Eller måske bruge en simplere (og langsommere) løsning.
Jeg har ikke set en sådan implementation, men - hvor svært kan det være ?!
Et forslag:
Lav dit eget containerobject med en hashmap som indlejret struktur for dine strenge. Med HashMap opfylder du dit krav "Jeg ønsker endvidere at kunne tilføje nye tekststrenge og fjerne tekststrenge hurtigt. Desuden må datastrukturen ikke fylde for meget i hukommelsen.".
Lav en metode på containerobjectet der finder og returnerer de relevante matches jf dine beskrivelse. Til at finde disse matches vil det være smart at bruge den nye(fra jdk 1.4) java.util.regex pakke. Du er vist teoretisk nødt til at løbe alle dine 5-50.000 strenge igennem (ligesom en database ville gøre det).
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.