import org.apache.lucene.util.fst.FST; //导入方法依赖的package包/类

/**

*

* @param inputStream the input stream

* @param outputStream the output stream

* @throws IOException if compilation fails

*/

public void compile(InputStream inputStream, OutputStream outputStream) throws IOException {

final HashSet words = new HashSet<>();

BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));

String line;

String last = null;

StringBuilder stringBuilder = new StringBuilder();

while ((line = reader.readLine()) != null) {

if (line.indexOf('#') >= 0) {

continue;

}

line = pattern.split(line)[0].trim();

line = line.toLowerCase();

if (line.equals(last)) {

continue;

}

last = line;

/*

* Add the word to the hash set in left-to-right characters order and reversed

* for easier matching later on.

*/

stringBuilder.setLength(0);

stringBuilder.append(line);

final int len = stringBuilder.length();

stringBuilder.append('>');

words.add(new BytesRef(stringBuilder));

stringBuilder.setLength(len);

stringBuilder.reverse().append('

words.add(new BytesRef(stringBuilder));

}

reader.close();

final BytesRef [] all = new BytesRef[words.size()];

words.toArray(all);

Arrays.sort(all, BytesRef::compareTo);

final Object nothing = NoOutputs.getSingleton().getNoOutput();

final Builder builder = new Builder<>(INPUT_TYPE.BYTE4, NoOutputs.getSingleton());

final IntsRefBuilder intsRef = new IntsRefBuilder();

for (BytesRef bytesRef : all) {

intsRef.clear();

intsRef.copyUTF8Bytes(bytesRef);

builder.add(intsRef.get(), nothing);

}

final FST fst = builder.finish();

try (final OutputStreamDataOutput out = new OutputStreamDataOutput(outputStream)) {

fst.save(out);

}

}

java fst 入门 例子,Java FST.save方法代码示例相关推荐

  1. java.util.zip 用法,Java压缩文件工具类ZipUtil使用方法代码示例

    本文实例通过Java的Zip输入输出流实现压缩和解压文件,前一部分代码实现获取文件路径,压缩文件名的更改等,具体如下: package com.utility.zip; import java.io. ...

  2. java gc 例子_Java GC.drawImage方法代码示例

    import org.eclipse.swt.graphics.GC; //导入方法依赖的package包/类 void paintElement(PaintEvent e) { GC g = e.g ...

  3. JAVA里tokens意思_Java TokenMetadata.sortedTokens方法代码示例

    import org.apache.cassandra.locator.TokenMetadata; //导入方法依赖的package包/类 /** * Get the "primary r ...

  4. java中isolate时间_Java HikariDataSource.setIdleTimeout方法代码示例

    import com.zaxxer.hikari.HikariDataSource; //导入方法依赖的package包/类 private HikariDataSource createHikari ...

  5. java getattribute为空_Java TransMeta.getAttribute方法代码示例

    import org.pentaho.di.trans.TransMeta; //导入方法依赖的package包/类 @Override public void getData( TransMeta ...

  6. java接收rowtype类型_Java PhysType.getJavaRowType方法代码示例

    import org.apache.calcite.adapter.enumerable.PhysType; //导入方法依赖的package包/类 public Result implementSp ...

  7. Java程序中fix time_Java Position.setFixTime方法代码示例

    import org.traccar.model.Position; //导入方法依赖的package包/类 @Override protected Object decode( Channel ch ...

  8. java okhttp设置超时_Java OkHttpClient.setWriteTimeout方法代码示例

    import com.squareup.okhttp.OkHttpClient; //导入方法依赖的package包/类 @Bean @ConditionalOnMissingBean public ...

  9. java jtree 监听_Java JTree.addTreeExpansionListener方法代码示例

    import javax.swing.JTree; //导入方法依赖的package包/类 public PackageBrowser(JFrame frame, String title, bool ...

最新文章

  1. kafka 异步发送阻塞_Kafka学习一
  2. 循环获取结构体中的健名与值的实现
  3. 【Flask项目】sqlalchemy原生sql查询,返回字典形式数据
  4. python中导入包中的__init__文件夹的一个重要作用(去年对文件名的导入)
  5. Java+MyEclipse+Tomcat (一)配置过程及jsp网站开发入门
  6. 求职OMG——大学生就业指导与技能
  7. kali利用msf工具对ms08-067漏洞入侵靶机(win xp2)
  8. 磁卡门锁怎么配卡_样式多的铜工艺品怎么设计请查看_江西南昌皇巢|铜门||别墅铜门|...
  9. 石头剪子布(信息学奥赛一本通-T1132)
  10. javascript-练习-数组数据存li中
  11. 猛男教你写代码_猛男程序员,鼓存储器和1960年代机器代码的取证分析
  12. 厦门大学计算机学硕复试,【图片】一战厦大计算机上岸,经验帖。慢更【考研吧】_百度贴吧...
  13. 使用EL表达式,显示Action中的数据
  14. 可靠性测试设备技术含量_电气自动化控制设备的可靠性测试(1)
  15. Oracle物理的体系结构
  16. 课程设计——企业网络项目搭建(上)
  17. 深度学习处理概率分布中常用的函数
  18. 一般纳税人和小规模纳税人哪个好?哪个更划算?
  19. 量子统计的正则分布和巨正则分布计算思路过程
  20. 【人工智能项目】深度学习实现图像多标签分类

热门文章

  1. 基于JAVA+SpringMVC+Mybatis+MYSQL的企业人事管理系统
  2. 基于JAVA+SpringMVC+Mybatis+MYSQL的旅游景点门票售票管理系统
  3. 基于JAVA+SpringBoot+Mybatis+MYSQL的在线点餐系统
  4. Dijkstra求最短路 II
  5. click 在网页测试手机模式下无效,不能执行。调成非手机模式即可
  6. 邮件协议POP3/IMAP/SMTP服务的区别
  7. iOS中Runtime简析
  8. [转]ListView滚动到底部自动加载数据
  9. C/C++ SQLite 之基础篇
  10. Scrapy爬虫报错AttributeError: ‘NoneType‘ object has no attribute ‘write‘