Lucene add、updateDocument添加、更新与search查询(转)
package com.lucene;import java.io.IOException;import org.apache.lucene.analysis.standard.StandardAnalyzer;import org.apache.lucene.document.Document;import org.apache.lucene.document.Field;import org.apache.lucene.index.IndexWriter;import org.apache.lucene.index.Term;import org.apache.lucene.queryParser.QueryParser;import org.apache.lucene.search.Hits;import org.apache.lucene.search.IndexSearcher;import org.apache.lucene.search.Query;public class UpdateDocument { private static String path = "d:/index"; public static void main(String[] args){// addIndex(); updateIndex(); search("李四"); search("王五"); } public static void addIndex(){ try { IndexWriter write = new IndexWriter(path,new StandardAnalyzer(),true); Document doc = new Document(); doc.add(new Field("id","123456",Field.Store.YES,Field.Index.UN_TOKENIZED)); doc.add(new Field("userName","张三",Field.Store.YES,Field.Index.TOKENIZED)); doc.add(new Field("comefrom","北京",Field.Store.YES,Field.Index.TOKENIZED)); write.addDocument(doc); write.close(); } catch (IOException e) { e.printStackTrace(); } } public static void updateIndex(){ try { IndexWriter write = new IndexWriter(path,new StandardAnalyzer(),false); Document docNew = new Document(); docNew.add(new Field("id","123456",Field.Store.YES,Field.Index.UN_TOKENIZED)); docNew.add(new Field("userName","王五",Field.Store.YES,Field.Index.TOKENIZED)); Term term = new Term("id","123456"); /** 调用updateDocument的方法,传给它一个新的doc来更新数据, Term term = new Term("id","1234567"); 先去索引文件里查找id为1234567的Doc,如果有就更新它(如果有多条,最后更新后只有一条)。如果没有就新增. 数据库更新的时候,我们可以只针对某个列来更新,而lucene只能针对一行数据更新。 */ write.updateDocument(term, docNew); write.close(); } catch (IOException e) { e.printStackTrace(); } } public static Query queryParser(String str){ QueryParser queryParser = new QueryParser("userName", new StandardAnalyzer()); try { Query query = queryParser.parse(str); return query; } catch (Exception e) { e.printStackTrace(); } return null; } public static void search(String str){ try { IndexSearcher search = new IndexSearcher(path); Query query = queryParser(str); Hits hits = search.search(query); if(hits==null){ return; } if(hits.length() == 0){ System.out.println(" 没有搜索到'" + str+"'"); return; } for (int i = 0; i < hits.length(); i++) { Document doc = hits.doc(i); System.out.println("id = "+hits.id(i)); System.out.println("own id = " + doc.get("id")); System.out.println("userName = "+doc.get("userName")); System.out.println("come from = "+doc.get("comefrom")); System.out.println(""); } } catch (Exception e) { e.printStackTrace(); } }}Lucene add、updateDocument添加、更新与search查询(转)的更多相关文章
- ASP.NET MVC搭建项目后台UI框架—6、客户管理(添加、修改、查询、分页)
目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...
- 给当前的URL添加/更新新的参数
/** * 给当前的URL添加/更新新的参数 * @param a 参数 * @param b 值 * @returns {string} 新的参数 * @constructor */ functio ...
- day 68crm(5) 分页器的进一步优化,以及在stark上使用分页器,,以及,整理代码,以及stark组件search查询
前情提要: 本节内容 自定制分页器 保存及查询记录 代码整理, stark组件search 查询 一:自定制分页器 page 1:创建类 Pagination # 自定制分页器 _ _init ...
- Dom4j 添加 / 更新 / 删除 XML
1.获得文档 /** *1.获得解析流 *2.解析XML */ 2.添加 /** *1.获取父元素 *2.创建元素 *3.创建属性并添加到元素中 *4.元素添加到根节点 */ 3.更新 /** *1. ...
- MVC客户管理(添加、修改、查询、分页)
ASP.NET MVC搭建项目后台UI框架—6.客户管理(添加.修改.查询.分页) 目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2 ...
- POJ 3468 A Simple Problem with Integers(线段树模板之区间增减更新 区间求和查询)
A Simple Problem with Integers Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 140120 ...
- 2015 UESTC 数据结构专题A题 秋实大哥与小朋友 线段树 区间更新,单点查询,离散化
秋实大哥与小朋友 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/59 Desc ...
- 2017 Wuhan University Programming Contest (Online Round) D. Events,线段树区间更新+最值查询!
D. Events 线段树区间更新查询区间历史最小值,看似很简单的题意写了两天才写出来. 题意:n个数,Q次操作,每次操作对一个区间[l,r]的数同时加上C,然后输出这段区间的历史最小值. 思路:在线 ...
- git add 命令添加所有改动内容
git add xx命令可以将xx文件添加到暂存区,如果有很多改动可以通过 git add -A .来一次添加所有改变的文件. 注意 -A 选项后面还有一个句点. git add -A表示添加所有内容 ...
随机推荐
- mongodb安装 win7版
首先下载mongdb的zip包,可以到:http://www.mongodb.org/downloads.选择32位或64位的. 在D盘创建mongodb文件夹,d:\mongodb.把解压里面所有的 ...
- spring容器启动的加载过程(二)
第六步: public abstract class AbstractApplicationContext extends DefaultResourceLoader implements Confi ...
- layoutSubview触发时机
layoutSubviews在以下情况下会被调用: 1.init初始化不会触发layoutSubviews 2.addSubview会触发layoutSubviews 3.设置view的Frame会触 ...
- erlang ets表
一.表遍历 通过ets:first/1获取表的第一个关键字,表中下一个关键字用ets:next/2得到,直到ets:next/2返回'$end_of_table' 当多几个进程并发访问ets表时,可以 ...
- Nginx正向代理让无法直接上网的机器通过代理上网
Nginx正向代理让无法直接上网的机器通过代理上网 在阿里云平台买了几台ECS.但是只要其中一台开通了公网.由于要初始化系统环境,需要网络安装相关依赖. Nginx正向代理配置: 一.Nginx 正向 ...
- 项目管理实践【三】每日构建【Daily Build Using CruiseControl.NET and MSBuild】
在上一篇项目管理实践教程二.源代码控制[Source Control Using VisualSVN Server and TortoiseSVN]中我们已经讲解了如何使用TortoiseSVN和Vi ...
- Python 查找binlog文件
经常需要在 binlog 中查找一些日志信息,于是写了一个简单的脚本.对于非常巨大的 binlog 文件,该脚本可能会速度慢,毕竟还是用的 list,暂时没想到好办法. 详细看代码: #/usr/bi ...
- android基础知识点复习之短信发送
界面布局: activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/an ...
- Apriori算法-java
package com.yang; import java.util.*; public class Apriori { private double minsup = 0.2;// 最小支持度 ...
- mysql 表连接
1.子查询是指在另一个查询语句中的SELECT子句. 例句: SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2); 其中,SELECT ...