Ejemplo n.º 1
0
  @Override
  public synchronized byte[] info(final MainOptions options) {
    final TokenBuilder tb = new TokenBuilder();
    final long l = inX.length() + inY.length() + inZ.length();
    tb.add(LI_NAMES).add(data.meta.ftinclude).add(NL);
    tb.add(LI_SIZE + Performance.format(l, true) + NL);

    final IndexStats stats = new IndexStats(options.get(MainOptions.MAXSTAT));
    addOccs(stats);
    stats.print(tb);
    return tb.finish();
  }
Ejemplo n.º 2
0
 /**
  * Caches and returns all unique tokens specified in a query.
  *
  * @param list token list
  * @return token set
  */
 private TokenSet unique(final TokenList list) {
   // cache all query tokens in a set (duplicates are removed)
   final TokenSet ts = new TokenSet();
   switch (mode) {
     case ALL:
     case ANY:
       for (final byte[] t : list) ts.add(t);
       break;
     case ALL_WORDS:
     case ANY_WORD:
       final FTLexer l = new FTLexer(ftt.opt);
       for (final byte[] t : list) {
         l.init(t);
         while (l.hasNext()) ts.add(l.nextToken());
       }
       break;
     case PHRASE:
       final TokenBuilder tb = new TokenBuilder();
       for (final byte[] t : list) tb.add(t).add(' ');
       ts.add(tb.trim().finish());
   }
   return ts;
 }
Ejemplo n.º 3
0
  /**
   * Converts to HANKAKU characters.
   *
   * @param text Japanese text
   * @return result of conversion(->HANKAKU)
   */
  private static byte[] toHankaku(final byte[] text) {
    if (ascii(text)) return text;

    final int tl = text.length;
    final TokenBuilder tb = new TokenBuilder(tl);
    for (int t = 0; t < tl; t += cl(text, t)) {
      final int c = cp(text, t);
      if (c >= 0xFF10 && c <= 0xFF19 || c >= 0xFF21 && c <= 0xFF3A || c >= 0xFF41 && c <= 0xFF5A) {
        tb.add(c - 0xFEE0);
      } else if (c == 0x3000) { // IDEOGRAPHIC SPACE
        tb.add(0x0020);
      } else if (c == 0xFF01) { // !
        tb.add(0x0021);
      } else if (c == 0xFF02) { // " FULLWIDTH QUOTATION MARK
        tb.add(0x0022);
      } else if (c == 0x201C) { // " LEFT DOUBLE QUOTATION MARK
        tb.add(0x0022);
      } else if (c == 0x201D) { // " RIGHT DOUBLE QUOTATION MARK
        tb.add(0x0022);
      } else if (c == 0xFF03) { // #
        tb.add(0x0023);
      } else if (c == 0xFF04) { // $
        tb.add(0x0024);
      } else if (c == 0xFF05) { // %
        tb.add(0x0025);
      } else if (c == 0xFF06) { // &
        tb.add(0x0026);
      } else if (c == 0xFF07) { // ' FULLWIDTH APOSTROPHE
        tb.add(0x0027);
      } else if (c == 0x2018) { // ' LEFT SINGLE QUOTATION MARK
        tb.add(0x0027);
      } else if (c == 0x2019) { // ' RIGHT SINGLE QUOTATION MARK
        tb.add(0x0027);
      } else if (c == 0xFF08) { // (
        tb.add(0x0028);
      } else if (c == 0xFF09) { // )
        tb.add(0x0029);
      } else if (c == 0xFF0A) { // *
        tb.add(0x002A);
      } else if (c == 0xFF0B) { // +
        tb.add(0x002B);
      } else if (c == 0xFF0C) { // ,
        tb.add(0x002C);
      } else if (c == 0xFF0D) { // -
        tb.add(0x002D);
      } else if (c == 0xFF0E) { // .
        tb.add(0x002E);
      } else if (c == 0xFF0F) { // /
        tb.add(0x002F);
      } else if (c == 0xFF1A) { // :
        tb.add(0x003A);
      } else if (c == 0xFF1B) { // ;
        tb.add(0x003B);
      } else if (c == 0xFF1C) { // <
        tb.add(0x003C);
      } else if (c == 0xFF1D) { // =
        tb.add(0x003D);
      } else if (c == 0xFF1E) { // >
        tb.add(0x003E);
      } else if (c == 0xFF1F) { // ?
        tb.add(0x003F);
      } else if (c == 0xFF20) { // @
        tb.add(0x0040);
      } else if (c == 0xFF3B) { // [
        tb.add(0x005B);
      } else if (c == 0xFFE5) { // \
        tb.add(0x005C);
      } else if (c == 0xFF3D) { // ]
        tb.add(0x005D);
      } else if (c == 0xFF3E) { // ^
        tb.add(0x005E);
      } else if (c == 0xFF3F) { // _
        tb.add(0x005F);
      } else if (c == 0xFF40) { // `
        tb.add(0x0060);
      } else if (c == 0xFF5B) { // {
        tb.add(0x007B);
      } else if (c == 0xFF5C) { // |
        tb.add(0x007C);
      } else if (c == 0xFF5D) { // }
        tb.add(0x007D);
      } else if (c == 0xFF5E) { // ~
        tb.add(0x007E);
      } else {
        tb.add(c);
      }
    }
    return tb.finish();
  }