Lucene4.3开发之第一步小试牛刀

       首先,本篇适合对于刚学lucene的朋友们,在这之前笔者还是喜欢啰嗦几句,想要学好一门技术,首先就得从思想层次上全面了解这种技术的作用,适用范围,以及优缺点,对于这些理论,大家可以先在Google,或百度上深入了解一下,也可以到其官方网站上看文档或者WIKI,只有在思想层面上,大概了解这个技术的总体架构,那么学起来,就可以很快上手,举个例子,先“会当凌绝顶”一下,然后在爬山,肯定会容易一些,笔者想说的就是这个道理。

     下面就开始进入主题,本项目采用Maven进行构件,由于以后的lucene学习采用的架包都差不多,所以就新建了lucene-parent项目主要是对架包进行统一管理,该项目的结构如下:

       

        只是一个简单的pom.xml文件,该文件内容如下:

       

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>lucene</groupId>
  <artifactId>lucene-parent</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>Lucene Parent</name>
  <url>http://maven.apache.org</url>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <lucene.version>4.3.1</lucene.version>
    <junit.version>3.8.1</junit.version>
  </properties>
	
  <dependencyManagement>
  	<dependencies>
	  	<dependency>
	      <groupId>junit</groupId>
	      <artifactId>junit</artifactId>
	      <version>${junit.version}</version>
	      <scope>test</scope>
	    </dependency>
  		<dependency>
			<groupId>org.apache.lucene</groupId>
			<artifactId>lucene-analyzers-common</artifactId>
			<version>${lucene.version}</version>
			</dependency>
	    <dependency>
			<groupId>org.apache.lucene</groupId>
			<artifactId>lucene-core</artifactId>
			<version>${lucene.version}</version>
			</dependency>
  	</dependencies>
  </dependencyManagement>
</project>
       然后新建一个项目进行lucene的入门学习,本篇的入门代码,相对简单,主要是先把lucene添加的Demo给搭建起来,后续的修改,删除,查询会在后面的文章中一一补上,笔者觉得学习这东西还是脚踏实地一步一步来比较好,只要真正真正理解每一行代码的意思,我们就算有收获了,有时候学习步伐太快,反而会根基不牢,效果不好。

        项目名叫lucene-index,项目的结构如下:

       

           pom.xml文件的配置如下:

          

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
	  <groupId>lucene</groupId>
	  <artifactId>lucene-parent</artifactId>
	  <version>0.0.1-SNAPSHOT</version>
	  <relativePath>../lucene-parent/pom.xml</relativePath>
  </parent>
  
  <artifactId>lucene-index</artifactId>
  <name>lucene-index</name>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
	<groupId>org.apache.lucene</groupId>
	<artifactId>lucene-analyzers-common</artifactId>
	</dependency>
    <dependency>
		<groupId>org.apache.lucene</groupId>
		<artifactId>lucene-core</artifactId>
	</dependency>     
  </dependencies>
</project>

CommonLuceneBasic.java的代码如下:

package cn.lichunan.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.StringField;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;

/**
 * Lucene的演示Demo类
 *
 */
public class CommonLuceneBasic 
{
	/**
	 * 抽象的父类文件夹
	 */
    public static Directory directory;
    
    /**
     * 返回IndexWriter
     * @throws IOException 
     */
    public static IndexWriter getWriter() throws IOException{
    	Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_43);//设置标准分词器,默认是一元分词
    	IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_43, analyzer);//设置IndexWriterConfig
    	return new IndexWriter(directory, iwc);
    }
    
    /**
     * 
     * @param indexWriterPath 索引存放路径
     */
    public static void add(String indexWriterPath){
    	IndexWriter writer = null;
    	try {
			directory = FSDirectory.open(new File(indexWriterPath));//打开存放索引的路径
			writer = getWriter();
			Document doc = new Document();
			doc.add(new StringField("id", "1", Store.YES));//存储
			doc.add(new StringField("name", "张飞", Store.YES));//存储
			doc.add(new StringField("content", "也许放弃,才能靠近你!", Store.YES));//存储
			writer.addDocument(doc);//添加写入流里
			writer.forceMerge(1);//优化压缩段,大规模添加数据的时候,少使用本方法,会影响性能
			writer.commit();//提交数据
			System.out.println("添加成功");
		} catch (Exception e) {
			e.printStackTrace();
		} finally{
			if(writer != null){
				try {
					writer.close();//关闭流
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
    	
    }
    
    public static void main(String[] args){
    	String path = "E:\\临时索引";
    	add(path);//调用添加方法
    }
    
}

添加成功后,我们可以通过Luke工具,进行索引查看,如果不知道Luke工具是什么,或者不知道怎么使用,可以到网上去查查资料。

下面贴一张使用Luke工具查看后的结果:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值