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表示添加所有内容 ...
随机推荐
- java中修饰符及其用法
1. java中的修饰符 a. 权限修饰符 private,默认的,protected,public b. 状态修饰符 static,final c. 抽象修饰符 abstract 2. 类修饰符 p ...
- LeetCode OJ 289. Game of Life
According to the Wikipedia's article: "The Game of Life, also known simply as Life, is a cellul ...
- SpringMVC 的重定向时,参数非法问题
在重定向时,携带的参数出现非法 /shopping/editShippingAddressCart?cs=0eaa49d6-9c6e-4d02-85d0-40c3c7939207|ef9d80b1-7 ...
- C#第五天
引用命名空间快捷键:Shift + Alt +F10: 值类型和引用类型: 区别: 1,值类型和引用类型在内存上存储的地方不一样: 2.在传递值类型和传递引用类型的时候,传递的方式不一样.值类型我们称 ...
- css font简写规则
是不是在很很多网站的公共样式中会看到这样的代码?font: 12px/150% Arial, Verdana, "\5b8b\4f53";意思为:字体大小/行高 字体族 " ...
- java启动子进程以及进程通信
1.利用进程的管道通信传输流 2.子进程没有控制台,正常测试的时候也是没办法看到子进程的输出的,需要传到主线程 3.测试主进程传参给子进程再传回来 4.父进程启动子进程只要执行runtime.exec ...
- [转载] Winform中几种好用的Grid Control
转自 博客园 http://www.cnblogs.com/peterzb/archive/2009/05/29/1491781.html 1.DataGridView .net 2.0框架自带的网 ...
- 如何使用ajax(jquery)
以下是我第一次工作时写的ajax: $.ajax({ url: "/spinweb/store/storeHome.do", dataType: 'json', data: { & ...
- iosNSMutableAttributedString 简单操作
// 打印系统中所有字体的类型名字 NSArray *familyNames = [UIFont familyNames]; for(NSString *familyName in fam ...
- Apriori算法-数组-C语言
原文地址:http://blog.csdn.net/liema2000/article/details/6118423 #include<stdio.h>typedef struct { ...