예제 #1
0
            /// <summary>
            /// Returns an <seealso cref="StemmerOverrideMap"/> to be used with the <seealso cref="StemmerOverrideFilter"/> </summary>
            /// <returns> an <seealso cref="StemmerOverrideMap"/> to be used with the <seealso cref="StemmerOverrideFilter"/> </returns>
            /// <exception cref="IOException"> if an <seealso cref="IOException"/> occurs; </exception>
            public virtual StemmerOverrideMap Build()
            {
                ByteSequenceOutputs outputs = ByteSequenceOutputs.Singleton;

                Lucene.Net.Util.Fst.Builder <BytesRef> builder = new Lucene.Net.Util.Fst.Builder <BytesRef>(FST.INPUT_TYPE.BYTE4, outputs);
                int[]   sort      = hash.Sort(BytesRef.UTF8SortedAsUnicodeComparer);
                IntsRef intsSpare = new IntsRef();
                int     size      = hash.Size();

                for (int i = 0; i < size; i++)
                {
                    int      id       = sort[i];
                    BytesRef bytesRef = hash.Get(id, spare);
                    UnicodeUtil.UTF8toUTF32(bytesRef, intsSpare);
                    builder.Add(intsSpare, new BytesRef(outputValues[id]));
                }
                return(new StemmerOverrideMap(builder.Finish(), ignoreCase));
            }
 /// <summary>
 /// Returns an <seealso cref="StemmerOverrideMap"/> to be used with the <seealso cref="StemmerOverrideFilter"/> </summary>
 /// <returns> an <seealso cref="StemmerOverrideMap"/> to be used with the <seealso cref="StemmerOverrideFilter"/> </returns>
 /// <exception cref="IOException"> if an <seealso cref="IOException"/> occurs; </exception>
 public virtual StemmerOverrideMap Build()
 {
     ByteSequenceOutputs outputs = ByteSequenceOutputs.Singleton;
     Lucene.Net.Util.Fst.Builder<BytesRef> builder = new Lucene.Net.Util.Fst.Builder<BytesRef>(FST.INPUT_TYPE.BYTE4, outputs);
     int[] sort = hash.Sort(BytesRef.UTF8SortedAsUnicodeComparer);
     IntsRef intsSpare = new IntsRef();
     int size = hash.Size();
     for (int i = 0; i < size; i++)
     {
         int id = sort[i];
         BytesRef bytesRef = hash.Get(id, spare);
         UnicodeUtil.UTF8toUTF32(bytesRef, intsSpare);
         builder.Add(intsSpare, new BytesRef(outputValues[id]));
     }
     return new StemmerOverrideMap(builder.Finish(), ignoreCase);
 }