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表示添加所有内容 ...
随机推荐
- vultr vps注册和后台教程
我用了一年多vultr vps,感觉相当满意.我算是vultr最早的一批用户了,当时他们充值多少赠送多少,吸引大批新用户搬家到vultr,给linode和digitalocean vps不少的市场压力 ...
- ListCtrl中垂直滚动条自动滚动
在用ListCtrl控件时,当向该控件中添加数据时,怎么样可以把滚动条时时滚动到最后一行,这样便可看到添加的新数据内容 1 加完数据后执行 EnsureVisible(最后一行索引) 可以保证滚动到最 ...
- css3动画 9步
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- 比较全的 C# 操作 Word的代码
using System;using System.Collections.Generic;using System.Text;using Microsoft.Office.Interop.Word; ...
- MyBatis 基本数据类型条件判断问题
1.判断参数使用:_parameter <select id="findCount" parameterType="int" resultType=&qu ...
- buffer小解
Buffer代表一个缓冲区,存储二进制数据,是字节流 创建: 创建Buffer有4种方式: 1.new Buffer(size) 以字节为单位创建指定大小的Buffer eg: var buf= ne ...
- 配置php开发环境
安装apache 1 loadModule 加载php的模块2 addType 告诉apache凡是php结尾的文件都交给php模块执行3 PHPIniDir 告诉apache php.ini的文件在 ...
- bootstrap ch2清除浮动+12
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...
- mybatis------xml的一些规范等
转与拼接: MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBatis 使用简单的 XML ...
- OC-之AFNetworking
AFNetworking介绍与用法: http://cocoadocs.org/docsets/AFNetworking/2.4.1/index.html