lucene创建索引
创建索引.
1.lucene下载.
下载地址:http://archive.apache.org/dist/lucene/java/.
lucene不同版本之间有不小的差别,这里下载的是lucene 4.3.
2.导入jar包
打开eclipse,新建dynamic web project.解压下载的lucene压缩包,依次找到下面几个jar包,加到/WebContent/WEB-INF/lib目录下,然后Add to Build Path:
| 包名 | 位置 |
| lucene-analyzers-common-4.3.0.jar | lucene-4.3.0/analysis/common |
| lucene-analyzers-smartcn-4.3.0.jar | lucene-4.3.0/analysis/smartcn |
| lucene-core-4.3.0.jar | lucene-4.3.0/core |
| lucene-highlighter-4.3.0.jar | lucene-4.3.0/highlighter |
| lucene-queries-4.3.0.jar | lucene-4.3.0/queries |
| lucene-queryparser-4.3.0.jar | lucene-4.3.0/queryparser |
3.创建索引
package ac.ucas.lucene;
import java.io.File;
import java.io.IOException;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.IntField;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.document.StringField;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
public class IndexCreate {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 创建标准分词器
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_43);
// 创建indexwriter配置信息
IndexWriterConfig indexWriterConfig = new IndexWriterConfig(Version.LUCENE_43, analyzer);
// 设置索引的打开方式
indexWriterConfig.setOpenMode(OpenMode.CREATE_OR_APPEND);
// 索引的存储路径
Directory directory = null;
// 索引的增删改由indexWriter创建
IndexWriter indexWriter = null;
try {
directory = FSDirectory.open(new File("/Users/yaopan/Documents/eclipseworkspace/test"));
if (indexWriter.isLocked(directory)) {//若indexWriter锁定则解锁
indexWriter.unlock(directory);
}
//实例化indexWriter
indexWriter = new IndexWriter(directory, indexWriterConfig);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Document doc1 = new Document();
//添加三个域
doc1.add(new StringField("id", "abcde", Store.YES));
doc1.add(new TextField("content", "极客学院", Store.YES));
doc1.add(new IntField("num", 1, Store.YES));
// 写入索引
try {
indexWriter.addDocument(doc1);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Document doc2 = new Document();
doc2.add(new StringField("id", "addff", Store.YES));
doc2.add(new TextField("content", "LUCENE案例", Store.YES));
doc2.add(new IntField("num", 2, Store.YES));
// 写入索引
try {
indexWriter.addDocument(doc2);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
indexWriter.commit();
indexWriter.close();
directory.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("index ceate complete!");
}
}
4.lucene分词器
{%codeblock lang:java lucene分词器 %}
package ac.ucas.lucene;
import java.io.IOException;
import java.io.StringReader;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.cjk.CJKAnalyzer;
import org.apache.lucene.analysis.core.KeywordAnalyzer;
import org.apache.lucene.analysis.core.SimpleAnalyzer;
import org.apache.lucene.analysis.core.StopAnalyzer;
import org.apache.lucene.analysis.core.WhitespaceAnalyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.apache.lucene.util.Version;
import sun.dc.pr.PRError;
public class AnalyerStudy {
private static String str = "lucene, 全文检索框架";
public static void print(Analyzer analyzer){
StringReader stringReader=new StringReader(str);
try {
TokenStream tokenStream=analyzer.tokenStream(str, stringReader);
tokenStream.reset();
CharTermAttribute term=tokenStream.getAttribute(CharTermAttribute.class);
System.out.println("分词技术:"+analyzer.getClass());
while(tokenStream.incrementToken()){
System.out.print(term.toString()+" | ");
}
System.out.println("\n");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
Analyzer analyzer=null;
//标准分词
analyzer=new StandardAnalyzer(Version.LUCENE_43);
print(analyzer);
//空格分词
analyzer =new WhitespaceAnalyzer(Version.LUCENE_43);
print(analyzer);
//简单分词
analyzer=new SimpleAnalyzer(Version.LUCENE_43);
print(analyzer);
//二分法
analyzer=new CJKAnalyzer(Version.LUCENE_43);
print(analyzer);
//关键字
analyzer=new KeywordAnalyzer();
print(analyzer);
//
analyzer=new StopAnalyzer(Version.LUCENE_43);
print(analyzer);
}
}
{% endcodeblock %}
分词结果:
分词技术:class org.apache.lucene.analysis.standard.StandardAnalyzer
lucene | 全 | 文 | 检 | 索 | 框 | 架 |
分词技术:class org.apache.lucene.analysis.core.WhitespaceAnalyzer
lucene, | 全文检索框架 |
分词技术:class org.apache.lucene.analysis.core.SimpleAnalyzer
lucene | 全文检索框架 |
分词技术:class org.apache.lucene.analysis.cjk.CJKAnalyzer
lucene | 全文 | 文检 | 检索 | 索框 | 框架 |
分词技术:class org.apache.lucene.analysis.core.KeywordAnalyzer
lucene, 全文检索框架 |
分词技术:class org.apache.lucene.analysis.core.StopAnalyzer
lucene | 全文检索框架 |
5. 使用luke打开索引
Luke是一个用于Lucene搜索引擎的,方便开发和诊断的第三方工具,它可以访问现有Lucene的索引.
luke下载地址:https://github.com/DmitryKey/luke/releases
lucene创建索引的更多相关文章
- lucene创建索引简单示例
利用空闲时间写了一个使用lucene创建索引简单示例, 1.使用maven创建的项目 2.需要用到的jar如下: 废话不多说,直接贴代码如下: 1.创建索引的类(HelloLucene): packa ...
- Lucene创建索引和索引的基本检索(Lucene 之 Hello World)
Author: 百知教育 gaozhy 注:演示代码所使用jar包版本为 lucene-xxx-5.2.0.jar 一.lucene索引操作 1.创建索引代码 try { // 1. 指定索引文件存 ...
- lucene创建索引的几种方式(一)
什么是索引: 根据你输入的值去找,这个值就是索引 第一种创建索引的方式: 根据文件来生成索引,如后缀为.txt等的文件 步骤: 第一步:FSDirectory.open(Paths.get(url)) ...
- Lucene创建索引流程
1.创建索引流程 原始文档:互联网上的网页(爬虫或蜘蛛).数据库中的数据.磁盘上的文件 创建文档对象(非结构化数据) 文档对象中的属性不叫属性现在成为域. 每个 Document 可以有多个 Fiel ...
- 搜索引擎学习(二)Lucene创建索引
PS:需要用到的jar包: 代码实现 1.工程结构 2.设置工程依赖的jar包 3.代码实现 /** * Lucene入门 * 创建索引 */ public class CreateIndex { / ...
- 第五步:Lucene创建索引
package cn.lucene; import java.io.IOException; import java.nio.file.Paths; import java.util.Date; im ...
- Apache Lucene(全文检索引擎)—创建索引
目录 返回目录:http://www.cnblogs.com/hanyinglong/p/5464604.html 本项目Demo已上传GitHub,欢迎大家fork下载学习:https://gith ...
- Lucene 4.7 --创建索引
Lucene的最新版本和以前的语法或者类名,类规定都相差甚远 0.准备工作: 1). Lucene官方API http://lucene.apache.org/core/4_7_0/index.htm ...
- Lucene.net 从创建索引到搜索的代码范例
关于Lucene.Net的介绍网上已经很多了在这里就不多介绍Lucene.Net主要分为建立索引,维护索引和搜索索引Field.Store的作用是通过全文检查就能返回对应的内容,而不必再通过id去DB ...
随机推荐
- canvas绘制圆心扇形可组成颜色随机的七色小花
啊~现在应该还是春天吧.心情一如既往的烦闷呐.最近做了一个canvas的扇形绘制的东西.把它整理出来变成一个适合春天的花朵绘制~沉闷的工作环境已经让我这种有趣的人也变成了无聊鬼怪呢.下次一定想找一个年 ...
- 关于Goldwell平台推出赠金及手数奖励
关于Goldwell平台推出赠金及手数奖励 Goldwell平台是一家拥有30多年现货黄金经验平台,平台位于柬埔寨金边,是一家国际衍生品的经纪公司.Goldwell平台它对柬埔寨金融市场和客户绝对的承 ...
- tkinter 创建登陆注册界面
import tkinter as tk from tkinter import messagebox #设置窗口居中 def window_info(): ws = window.winfo_scr ...
- P2520 [HAOI2011]向量
题目描述 给你一对数a,b,你可以任意使用(a,b), (a,-b), (-a,b), (-a,-b), (b,a), (b,-a), (-b,a), (-b,-a)这些向量,问你能不能拼出另一个向量 ...
- POJ2449 Remmarguts' Date
"Good man never makes girls wait or breaks an appointment!" said the mandarin duck father. ...
- [HNOI2003]激光炸弹
Description 一种新型的激光炸弹,可以摧毁一个边长为R的正方形内的所有的目标.现在地图上有n个目标,用整数,表示目标在地图上的位置,每个目标都有一个价值.激光炸弹的投放是通过卫星定位的,但其 ...
- ●洛谷P2495 [SDOI2011]消耗战
题链: https://www.luogu.org/problemnew/show/P2495题解: 虚树入门,树形dp 推荐博客:http://blog.csdn.net/lych_cys/arti ...
- 【BZOJ1951】【SDOI2010】古代猪文
Background "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--" --选自猪王国民歌 很久很 ...
- 【bzoj4444 scoi2015】国旗计划
题目描述 A 国正在开展一项伟大的计划 —— 国旗计划.这项计划的内容是边防战士手举国旗环绕边境线奔袭一圈.这项计划需要多名边防战士以接力的形式共同完成,为此,国土安全局已经挑选了 NN 名优秀的边防 ...
- hdu 5115(2014北京—dp)
题意: 有一排狼,每只狼有一个伤害A,还有一个伤害B.杀死一只狼的时候,会受到这只狼的伤害A和这只狼两边的狼的伤害B的和.如果某位置的狼被杀,那么杀它左边的狼时就会收到来自右边狼的B,因为这两只狼是相 ...