<> <> <> <> <> DIRECTORY Rope, KeyNoteDatabase; KeyNote: CEDAR DEFINITIONS = BEGIN ROPE: TYPE = Rope.ROPE; FileName: TYPE = Rope.ROPE; FileNameList: TYPE = LIST OF Rope.ROPE; <<>> <> FileNamesToMatch: TYPE = REF FileNamesToMatchObject; FileNamesToMatchObject: TYPE = RECORD [ pattern: ROPE, wDir: ROPE _ NIL ]; WordVerifierProc: TYPE = PROCEDURE [clientData: REF ANY, word: ROPE] RETURNS [BOOLEAN]; <> TokenRelevanceThreshhold: TYPE = INT; <> StopListCutOff: TYPE = INT; Handle: TYPE = KeyNoteDatabase.DatabaseHandle; <> ResultList: TYPE = LIST OF Result; Result: TYPE = REF ANY; <> <> ResultObject: TYPE = RECORD [ fileName: ROPE, overAllWeight: REAL, tokenInfoList: TokenInfoList]; <> TokenInfoList: TYPE = LIST OF TokenInfo; TokenInfo: TYPE = REF ANY; <> TokenInfoObject: TYPE = RECORD [ token: ROPE, weight: REAL, frequency: INTEGER]; BuildStopList: PROCEDURE[fileNamesToMatch: FileNamesToMatch, stopListCutOff: StopListCutOff] RETURNS [wordList: ResultList]; <<>> <> OpenDatabase: PROCEDURE[databaseName: ROPE, fileNamesToMatch: FileNamesToMatch _ NIL, wordVerifierProc: WordVerifierProc _ NIL, tokenRelevanceThreshhold: TokenRelevanceThreshhold _ 1, clientDataForVerifierProc: REF ANY _ NIL] RETURNS [ db: Handle]; CloseDatabase: PROCEDURE [db: Handle]; AddDocumentToIndex: PROCEDURE [db: Handle, fileName: FileName, wordVerifierProc: WordVerifierProc] ; RemoveDocumentFromIndex: PROCEDURE [db: Handle, fileName: FileName, wordVerifierProc: WordVerifierProc]; <> FindDocumentsFromWords: PROCEDURE [db: Handle, ropeList: ResultList] RETURNS [resultList: ResultList]; <<>> <> Error: ERROR [ec: ErrorCode, explanation: ROPE _ NIL]; ErrorCode: TYPE = ATOM; <<$DatabaseProblems -- look at KeyNoteDatabase.Error>> <<>> <<>> END. <>