Example usage for org.apache.lucene.util.fst FST getBytesReader

List of usage examples for org.apache.lucene.util.fst FST getBytesReader

Introduction

In this page you can find the example usage for org.apache.lucene.util.fst FST getBytesReader.

Prototype

public BytesReader getBytesReader() 

Source Link

Document

Returns a BytesReader for this FST, positioned at position 0.

Usage

From source file:elhuyar.bilakit.Dictionary.java

License:Apache License

IntsRef lookup(FST<IntsRef> fst, char word[], int offset, int length) {
      if (fst == null) {
          return null;
      }/*  ww w  .j a  va2s. c  o m*/
      final FST.BytesReader bytesReader = fst.getBytesReader();
      final FST.Arc<IntsRef> arc = fst.getFirstArc(new FST.Arc<IntsRef>());
      // Accumulate output as we go
      final IntsRef NO_OUTPUT = fst.outputs.getNoOutput();
      IntsRef output = NO_OUTPUT;

      int l = offset + length;
      try {
          for (int i = offset, cp = 0; i < l; i += Character.charCount(cp)) {
              cp = Character.codePointAt(word, i, l);
              if (fst.findTargetArc(cp, arc, arc, bytesReader) == null) {
                  return null;
              } else if (arc.output != NO_OUTPUT) {
                  output = fst.outputs.add(output, arc.output);
              }
          }
          if (fst.findTargetArc(FST.END_LABEL, arc, arc, bytesReader) == null) {
              return null;
          } else if (arc.output != NO_OUTPUT) {
              return fst.outputs.add(output, arc.output);
          } else {
              return output;
          }
      } catch (IOException bogus) {
          throw new RuntimeException(bogus);
      }
  }

From source file:elhuyar.bilakit.Dictionary.java

License:Apache License

static void applyMappings(FST<CharsRef> fst, StringBuilder sb) throws IOException {
      final FST.BytesReader bytesReader = fst.getBytesReader();
      final FST.Arc<CharsRef> firstArc = fst.getFirstArc(new FST.Arc<CharsRef>());
      final CharsRef NO_OUTPUT = fst.outputs.getNoOutput();

      // temporary stuff
      final FST.Arc<CharsRef> arc = new FST.Arc<>();
      int longestMatch;
      CharsRef longestOutput;// w w  w . j ava2 s  .  c  o m

      for (int i = 0; i < sb.length(); i++) {
          arc.copyFrom(firstArc);
          CharsRef output = NO_OUTPUT;
          longestMatch = -1;
          longestOutput = null;

          for (int j = i; j < sb.length(); j++) {
              char ch = sb.charAt(j);
              if (fst.findTargetArc(ch, arc, arc, bytesReader) == null) {
                  break;
              } else {
                  output = fst.outputs.add(output, arc.output);
              }
              if (arc.isFinal()) {
                  longestOutput = fst.outputs.add(output, arc.nextFinalOutput);
                  longestMatch = j;
              }
          }

          if (longestMatch >= 0) {
              sb.delete(i, longestMatch + 1);
              sb.insert(i, longestOutput);
              i += (longestOutput.length - 1);
          }
      }
  }

From source file:stemmer.Dictionary.java

License:Apache License

IntsRef lookup(FST<IntsRef> fst, char word[], int offset, int length) {
    if (fst == null) {
        return null;
    }/*from   w w w .j  a  v a2 s  .co m*/
    final FST.BytesReader bytesReader = fst.getBytesReader();
    final FST.Arc<IntsRef> arc = fst.getFirstArc(new FST.Arc<IntsRef>());
    // Accumulate output as we go
    final IntsRef NO_OUTPUT = fst.outputs.getNoOutput();
    IntsRef output = NO_OUTPUT;

    int l = offset + length;
    try {
        for (int i = offset, cp = 0; i < l; i += Character.charCount(cp)) {
            cp = Character.codePointAt(word, i, l);
            if (fst.findTargetArc(cp, arc, arc, bytesReader) == null) {
                return null;
            } else if (arc.output != NO_OUTPUT) {
                output = fst.outputs.add(output, arc.output);
            }
        }
        if (fst.findTargetArc(FST.END_LABEL, arc, arc, bytesReader) == null) {
            return null;
        } else if (arc.output != NO_OUTPUT) {
            return fst.outputs.add(output, arc.output);
        } else {
            return output;
        }
    } catch (IOException bogus) {
        throw new RuntimeException(bogus);
    }
}

From source file:stemmer.Dictionary.java

License:Apache License

static void applyMappings(FST<CharsRef> fst, StringBuilder sb) throws IOException {
    final FST.BytesReader bytesReader = fst.getBytesReader();
    final FST.Arc<CharsRef> firstArc = fst.getFirstArc(new FST.Arc<CharsRef>());
    final CharsRef NO_OUTPUT = fst.outputs.getNoOutput();

    // temporary stuff
    final FST.Arc<CharsRef> arc = new FST.Arc<>();
    int longestMatch;
    CharsRef longestOutput;//from  w  w  w .  j ava  2s  . c o  m

    for (int i = 0; i < sb.length(); i++) {
        arc.copyFrom(firstArc);
        CharsRef output = NO_OUTPUT;
        longestMatch = -1;
        longestOutput = null;

        for (int j = i; j < sb.length(); j++) {
            char ch = sb.charAt(j);
            if (fst.findTargetArc(ch, arc, arc, bytesReader) == null) {
                break;
            } else {
                output = fst.outputs.add(output, arc.output);
            }
            if (arc.isFinal()) {
                longestOutput = fst.outputs.add(output, arc.nextFinalOutput);
                longestMatch = j;
            }
        }

        if (longestMatch >= 0) {
            sb.delete(i, longestMatch + 1);
            sb.insert(i, longestOutput);
            i += (longestOutput.length - 1);
        }
    }
}