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表示添加所有内容 ...
随机推荐
- gcc-config: Active gcc profile is invalid解决办法
错误描述 Gentoo软件安装错误,提示: gcc-config: Active gcc profile is invalid 解决方法: 列出可用的profile gcc-config -l gcc ...
- WTL消息以及处理函数声明
MSG_WM_CREATE LRESULT OnCreate(LPCREATESTRUCT lpCreateStruct); MSG_WM_INITDIALOG LRESULT OnInitDialo ...
- 接口post +json +bean
public ReturnBean<DealBean> getMember(String tagtype, String tag) { try { String requestUrl = ...
- SDK does not contain any platforms. error (android)
By default sdk was installed under the C:\Users\<user_name>\AppData\Local\Android\sdk\ directo ...
- 。◕‿◕。TMD
。◕‿◕。TMD TimeLimit: 2000/1000 MS (Java/Others) MenoryLimit: 32768/32768 K (Java/Others) 64-bit inte ...
- 关于maven相互依赖的工程部署问题
环境:win7 64位,myeclipse10.6,eclipse4.5,都配置了svn插件 问题描述:1.工程模块化之后都是通过pom配置model来关联的,svn提交之后,通过myeclipse的 ...
- android 录制视频方式
http://www.cnblogs.com/skyseraph/archive/2012/03/31/2427593.html http://bbs.csdn.net/topics/39088448 ...
- Redis使用详细教程
Redis使用详细教程 一.Redis基础部分: 1.redis介绍与安装比mysql快10倍以上 *****************redis适用场合**************** 1.取最新N个 ...
- 《剑指Offer》算法题——替换空格
题目:请实现一个函数,将一个字符串中的空格替换成“ % 20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are % 20Happy. class Solution ...
- MFC下DLL编程(图解)
MFC下DLL编程(图解) DLL(Dynamic Link Library,动态链接库)是微软公司为Windows和OS/2操作系统设计一种供应用程序在运行时调用的共享函数库.DLL是应用程序的一种 ...