数据库数据构建文件索引
2018-03-07 11:19
155 查看
//生成索引
public void buildIndex(final List<Knowledge> k) throws Exception { Thread t = new Thread(new Runnable() { public void run() { IndexWriter iwriter = null; try { // run方法具体重写 analyzer = new StandardAnalyzer(); // 将索引存储到内存中 // Directory directory = new RAMDirectory(); // 将索引存储到硬盘上 directory = FSDirectory.open(Paths.get(Constant.ADRESS)); IndexWriterConfig config = new IndexWriterConfig(analyzer); iwriter = new IndexWriter(directory, config); for (Knowledge l : k) { Document doc = new Document(); doc.add(new Field(Constant.ID, l.getKnowId().toString(), TextField.TYPE_STORED)); doc.add(new Field(Constant.TITLE, l.getKnowTitle(), TextField.TYPE_STORED)); doc.add(new Field(Constant.KNOWCONTENT, l.getKnowContent().replaceAll("<br>", ","), TextField.TYPE_STORED)); iwriter.addDocument(doc); updateStatetwo(l);//更改数据库索引标识为已生成 } iwriter.close(); directory.close(); } catch (Exception e) { e.printStackTrace(); try { iwriter.close(); } catch (Exception e1) { e1.printStackTrace(); } } } }); t.run(); ; } public List<Knowledge> getKnowledgeByid(final String value) { final List<Knowledge> knowledges = new ArrayList<Knowledge>(); Thread t = new Thread(new Runnable() { @Override public void run() { // run方法具体重写 analyzer = new StandardAnalyzer(); // 将索引存储到内存中 // Directory directory = new RAMDirectory(); // 将索引存储到硬盘上 try { directory = FSDirectory.open(Paths.get(Constant.ADRESS)); // 读取索引并查询 DirectoryReader ireader = DirectoryReader.open(directory); IndexSearcher isearcher = new IndexSearcher(ireader); // 解析一个简单的查询 QueryParser parser = new QueryParser(Constant.KNOWCONTENT, analyzer); Query query = parser.parse(value); ScoreDoc[] hits = isearcher.search(query, 1000).scoreDocs; // 迭代输出结果 String buff = null; for (int i = 0; i < hits.length; i++) { Document hitDoc = isearcher.doc(hits[i].doc); Knowledge k = new Knowledge(); k.setKnowId(Integer.parseInt(hitDoc.get(Constant.ID))); k.setKnowTitle(hitDoc.get(Constant.TITLE)); k.setKnowContent(hitDoc.get(Constant.KNOWCONTENT)); buff = hitDoc.get(Constant.KNOWCONTENT); if (buff.length() > 80) { k.setLitile(buff.substring(0, 80)); } else { k.setLitile(hitDoc.get(Constant.KNOWCONTENT)); } knowledges.add(k);//加入集合抛出 } ireader.close(); directory.close(); } catch (IOException e) { e.printStackTrace(); } catch (ParseException e) { e.printStackTrace(); } } }); t.run(); return knowledges; }
相关文章推荐
- c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程
- oracle 重建索引以及导出所有的索引脚本(可以解决还原数据库文件时先还原数据,在重新用脚本创建索引)
- Ajax实现xml文件数据插入数据库(一)--- 构建解析xml文件的js库
- Ajax实现xml文件数据插入数据库(一)--- 构建解析xml文件的js库
- Ajax实现xml文件数据插入数据库(一)--- 构建解析xml文件的js库
- Oracle数据文件丢失导致数据库启动故障解决一例
- 插入数据读取数据库写入到Text文件保存
- 【java基础:JDBC】通过读取配置文件进行数据库连接并读取数据的Demostration
- 熟悉常用数据存储方式(文件存储和数据库存储)
- 误删Oracle数据文件导致数据库无法打开
- 【表空间支持的最大数据文件大小的算法】【数据库限制】【数据文件文件头保留数据块数】
- SQL语句CVS文件数据导入数据库
- asp.net从数据库导出数据到word、excel、txt文本文件
- Ajax实现xml文件数据插入数据库(三)---javabean实现数据库插入
- 将excel文件中的商品数据导入到数据库,并实现相关检索以及模糊搜索功能
- 【Java】数据库查询的数据直接以指定文件类型下载到本地(弹出下载框)
- Oracle 数据库导出数据泵(EXPDP)文件存放的位置 推荐
- 7.跟我学solr---对文件数据添加索引
- 数据库操作_连接SQL Server数据库示例;连接ACCESS数据库;连接到 Oracle 数据库示例;SqlCommand 执行SQL命令示例;SqlDataReader 读取数据示例;使用DataAdapter填充数据到DataSet;使用DataTable存储数据库表;将数据库数据填充到 XML 文件;10 使用带输入参数的存储过程;11 使用带输入、输出参数的存储过程示;12 获得数据库中表的数目和名称;13 保存图片到SQL Server数据库示例;14 获得插入记录标识号;Exce
- 十四、oracle 数据库管理--管理表空间和数据文件