Changeset 12914


Ignore:
Timestamp:
2006-09-28T16:55:54+12:00 (18 years ago)
Author:
kjdon
Message:

allow IndexData to be constructed even if stem indexes are missing - we don't always build all stem indexes anymore. stemFile[stemmethod] will be null if that stem method hasn't been built

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gsdl/src/mgpp/text/IndexData.cpp

    r12886 r12914  
    3232  /* [JFG - Mar 06: Accent folding patch] */
    3333  for(int i=STEM_MIN;i <= STEM_MAX;i++)
    34     stemFile[i-1] = NULL;
     34    stemFile[i-1] = NULL;
    3535
    3636  invfFile = NULL;
     
    8181  /* [JFG - Mar 06: Accent folding patch] */
    8282  // read stem indexes
     83  // [KJD - optional stemming patch]
     84  // allow no stem indexes
    8385  for(int stem = STEM_MIN; stem <= STEM_MAX; stem++) {
    84       char *suffix = make_suffix (INVF_DICT_BLOCKED_SUFFIX_PAT, stem, NULL);
    85       stemFile[stem-1] = open_file (filename, suffix,
    86                  "rb", MAGIC_STEM_GEN(stem + '0'), MG_ABORT);
    87       if (!sih[stem-1].Read (stemFile[stem-1])) { UnloadData (); return false; }
    88    
    89       fseek (stemFile[stem-1], sih[stem-1].block_idx_start, SEEK_SET);
    90       if (!ReadBlockIdx (stemFile[stem-1], sii[stem-1])) { UnloadData (); return false; }
    91   }
    92 
    93 
     86    char *suffix = make_suffix (INVF_DICT_BLOCKED_SUFFIX_PAT, stem, NULL);
     87    stemFile[stem-1] = open_file (filename, suffix,
     88                  "rb", MAGIC_STEM_GEN(stem + '0'), MG_MESSAGE);
     89    if (stemFile[stem-1]!= NULL) {
     90      if (!sih[stem-1].Read (stemFile[stem-1])) {
     91    fclose (stemFile[stem-1]);
     92    stemFile[stem-1] = NULL;
     93    //UnloadData (); return false;
     94      }
     95     
     96      fseek (stemFile[stem-1], sih[stem-1].block_idx_start, SEEK_SET);
     97      if (!ReadBlockIdx (stemFile[stem-1], sii[stem-1])) {
     98    fclose (stemFile[stem-1]);
     99    stemFile[stem-1] = NULL;
     100    //UnloadData (); return false;
     101      }
     102    }
     103  }
     104 
     105 
    94106  // inverted file
    95107  invfFile = open_file (filename, INVF_SUFFIX, "rb",
     
    114126  }
    115127
    116   for(int i=STEM_MIN;i <= STEM_MAX;i++)
    117       if (stemFile[i-1] != NULL) {
    118         fclose (stemFile[i-1]); stemFile[i-1] = NULL;
    119       }
     128  for(int i=STEM_MIN;i <= STEM_MAX;i++) {
     129    if (stemFile[i-1] != NULL) {
     130      fclose (stemFile[i-1]); stemFile[i-1] = NULL;
     131    }
     132  }
    120133
    121134  if (invfFile != NULL) {
Note: See TracChangeset for help on using the changeset viewer.