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表示添加所有内容 ...
随机推荐
- 获取用户IP地址
// <summary> /// 取得客户端真实IP.如果有代理则取第一个非内网地址 /// by flower.b /// </summary> public static ...
- Objective-C 2.0属性(Property)介绍
通常在声明一些成员变量时会看到如下声明方式: @property (参数1,参数2) 类型 名字: 这里我们主要分析在括号中放入的参数,主要有以下三种: setter/getter方法(assign/ ...
- nginx(ubuntu)设置别名访问目录
1 2 3 4 5 6 7 8 9 10 11 12 13 location /phpmyadmin/ { alias /data/phpmyadmin/; index index.html in ...
- EditText光标居上
<EditText android:id="@+id/shareContent_editText" android:layout_width="wrap_conte ...
- 100个精选zencart扩展插件
100个精选zencart扩展插件 特别推荐 1. 数据库备份 2. 产品横向布局. 3. 邮件订阅Newsletter Subscribe. 4. google 翻译google_translate ...
- 裸二分图匹配poj1469
poj1496 题意: 给你p门课程和n个学生,一个学生可以选0门,1门,或者多门课程, 现在要求一个由p个学生组成的集合,满足下列2个条件: 1.每个学生选择一个不同的课程 2.每个课程都有不同的代 ...
- nefu 197 关键字检索(kmp算法)
Description 在信息检索系统中一个很重要的环节就是关键字符串的查找,从而很多对自己有用的信息.给你一个很长的一段文字, 和一个关键信息字符串,现在要你判断这段文字里面是否有关键字符串. In ...
- [转]Flash、Flex、AS3.0框架及类库资源收集之十全大补
原文地址:http://www.d5power.com/portal.php?mod=view&aid=27 APIs.Libs.Components1.as3ebaylibhttp://co ...
- 遭遇mediumint上限
Mediumint:The signed range is -8388608 to 8388607. The unsigned range is 0 to 16777215. home_notific ...
- 指定的命名连接在配置中找不到、非计划用于 EntityClient 提供程序或者无效
以下内容来自互联网 (1)web: 需要在客户端配置文件的中增加connectionString节点,此节点描述了EntityClient的连接信息. 例如: 在web.config的中增加conne ...