word_db.h
上传用户:psq1974
上传日期:2007-01-06
资源大小:1195k
文件大小:2k
源码类别:

mpeg/mp3

开发平台:

C/C++

  1. /* Copyright (C) 1998, 1999 State University of New York at Stony Brook
  2.    Author: Andrew V. Shuvalov ( andrew@ecsl.cs.sunysb.edu )
  3.    Software license is located in file "COPYING"
  4. */
  5. #ifndef _word_db_h_
  6. #define _word_db_h_
  7. #include <glib.h>
  8. #include <string>
  9. #include <map>
  10. #include <vector>
  11. #include "vs_types.h"
  12. #include "string_of_text.h"
  13. /** 
  14.  */
  15. class WordTreeNode {
  16. public:
  17.   typedef map< int, WordTreeNode * > childrensT;
  18. protected:
  19.   /** index of child nodes. Case INsensetive */
  20.   childrensT childrens;
  21.   /** list of places, where this word happens to be */
  22.   WordOccurencesT WordOccurences;
  23. public:
  24.   WordTreeNode() {}
  25.   
  26.   WordTreeNode *get_child( int ch );
  27.   const WordTreeNode *get_child( int ch ) const {
  28.     return ((WordTreeNode *)this)->get_child( ch );
  29.   }
  30.   const childrensT &get_all_childrens() const {
  31.     return childrens;
  32.   }
  33.   void register_word( int movieId, int strIdx, int posInLine );
  34.   const WordOccurencesT &get_word_occurences() const {
  35.     return WordOccurences;
  36.   }
  37. };
  38. /** 
  39.  */
  40. class WordDb {
  41.   /** text string by string */
  42.   AllTextsMapT allTextsMap;
  43.   /** the head of the tree */
  44.   WordTreeNode parentNode;
  45.   static const string spaces;
  46. public:
  47.   WordDb() {}
  48.   const TextOfMovieT *get_movie_text( int movieId );
  49.   const StringOfText *get_string_of_text( int movieId, int linenum ) const;
  50.   void add_new_movie_text( int id, TextOfMovieT *tom );
  51.   void insert_new_string_in_search_tree( const string &str, int movieId, 
  52.  int strIdx );
  53.   void insert_new_word_in_search_tree( const string &w, int movieId, 
  54.        int strIdx, int posInLine );
  55.   const WordOccurencesT &find_word( const string &w ) const;
  56.   void  find_similar_words( const string &word, GList *&similar ) const;
  57.   /** add to GList all reasonable words which are located 
  58.       somehow near reference word */
  59.   void  find_hint_words( const string &word, GList *&similar ) const;
  60.   WordOccurencesT merge_and( const WordOccurencesT &left, 
  61.      const WordOccurencesT &right ) const;
  62.   WordOccurencesT merge_and_not( const WordOccurencesT &left, 
  63.  const WordOccurencesT &right ) const;
  64.   WordOccurencesT merge_or( const WordOccurencesT &left, 
  65.     const WordOccurencesT &right ) const;
  66. };
  67. #endif _word_db_h_