예제 #1
0
int main(int argc, char *argv[])
{
  CSA SA;

  csa_read(&SA,argc-1,argv+1);

  test_approxsearch(&SA);
}
int load_index(char *filename, void **index){
   char fname1[128],fname2[128];
   CSA *SA;
   SA = (CSA *) malloc(sizeof(CSA));
   initranktables();
   mkdecodetable();
   sprintf(fname1,"%s.psi",filename);
   sprintf(fname2,"%s.idx",filename);
   csa_read(SA,fname1,fname2);
   (*index) = SA;
   return 0;
}
예제 #3
0
파일: ruby.c 프로젝트: sadakane/csalib
static VALUE
rb_csa_initialize(VALUE self, VALUE idx, VALUE psi)
{
    CSA *sa = csa_ptr(self);
    char *fname[2];

    fname[0] = StringValueCStr(idx);
    fname[1] = StringValueCStr(psi);
    csa_read(sa, 2, fname);

    return self;
}
예제 #4
0
int main(int argc, char *argv[])
{
  i64 i,n;
  CSA csa;
  mytimestruct before,after;
  double t;

   if (argc<2) {
      fprintf(stderr, "syntax: suftest file\n");
      return 1;
   }

   csa_read(&csa,argc,argv);
   n = csa.n;

   mygettime(&before);
   {
     int m;
     FILE *out;
     out = fopen("output.dec","w");
     i = 0;
     while (i < n) {
       if ((i/PAGE) % PAGE == 0) {
         fprintf(stderr,"%ld \r",i/PAGE);  fflush(stderr);
       }
       m = PAGE;
       if (i+m >= n) m = n-i;
       csa.text(buf,&csa,i,i+m-1);
       fwrite(buf,1,m,out);
       i += m;
     }
     fwrite(buf,1,0,out);
     fclose(out);
   }
   mygettime(&after);
   t = mylaptime(&before,&after);
   fprintf(stderr,"time %f sec\n",t);
   return 0;
}
예제 #5
0
int load_index(char *filename, void **index)
{
  CSA *csa;
  char *fname1;
  int fnamelen;
  char **argv;

  fnamelen = strlen(filename);
  fname1 = malloc(fnamelen);
  if (fname1 == NULL) {
    printf("load_index:1. not enough mem.\n");
    exit(1);
  }
  strncpy(fname1,filename,fnamelen-4);
  strcpy(fname1+fnamelen-4,".idx");

  argv = malloc(sizeof(char *)*2);
  if (argv == NULL) {
    printf("load_index:3. not enough mem.\n");
    exit(1);
  }
  argv[0] = fname1;
  argv[1] = filename;

  csa = malloc(sizeof(CSA));
  if (csa == NULL) {
    printf("load_index:2. not enough mem.\n");
    exit(1);
  }
//  printf("csa_read %s %s\n",argv[1],argv[2]);
  csa_read(csa,2,argv);
  *index = (void *)csa;

  free(argv);
  free(fname1);
  return 0;
}
예제 #6
0
int main(int argc, char *argv[])
{
  i64 n;
  CSA SA;

  if (argc<3) {
    fprintf(stderr, "syntax: %s {indexfiles}\n", argv[0]);
    return 1;
  }

  csa_read(&SA,argc-1, argv+1);
  n = SA.n;

#if 0
{
  int i;
  rank_t x;
  unicode_t code;
  uchar buf[6], *p;
  x = SA.inverse(&SA, 0);
  for (i = 0; i < 1000; i++) {
    if (csa_utf8_T_psi(&SA, &x, &code) == -1) {
      printf("???\n");
    }
    p = &buf[0];
    unicode_to_string(&p, code);
    buf[unicode_len(code)] = 0;
    printf("%d code = %d (%s) rank = %ld\n", i, code, &buf[0], x);
  }
  for (i = 0; i < 1000; i++) {
    if (csa_utf8_BW_LF(&SA, &x, &code) == -1) {
      printf("???\n");
    }
    p = &buf[0];
    unicode_to_string(&p, code);
    buf[unicode_len(code)] = 0;
    printf("%d code = %d (%s) rank = %ld\n", i, code, &buf[0], x);
  }
}
#endif

#if 1
{
  int i;
  rank_t x;
  unicode_t code;
  uchar buf[6], *p;
  CSAFILE *csafile;

  csafile = csa_fdopen(&SA, NULL);
  for (i = 0; i < 1000; i++) {
    code = csa_fgetwc(csafile);
    x = csafile->rank;
    p = &buf[0];
    unicode_to_string(&p, code);
    buf[unicode_len(code)] = 0;
    printf("%d code = %d (%s) rank = %ld\n", i, code, &buf[0], x);
  }
  for (i = 0; i < 1000; i++) {
    code = csa_fgetwbw(csafile);
    x = csafile->rank;
    p = &buf[0];
    unicode_to_string(&p, code);
    buf[unicode_len(code)] = 0;
    printf("%d code = %d (%s) rank = %ld\n", i, code, &buf[0], x);
  }
}
#endif

  return 0;
}