lucene

1、
package com.lucene.demo;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.cn.smart.SmartChineseAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.Term;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.highlight.Highlighter;
import org.apache.lucene.search.highlight.QueryScorer;
import org.apache.lucene.search.highlight.SimpleHTMLFormatter;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import java.io.IOException;
import java.io.StringReader;
import java.nio.file.Paths;

public class Test01 {

public static void main(String[] args) {
addDoc();
//upDoc();
//delDoc();
search();
}

public static void addDoc(){
try {
Analyzer analyzer = new SmartChineseAnalyzer();
Directory directory = FSDirectory.open( Paths.get("F:/tools/lucene_db/users"));
IndexWriterConfig config = new IndexWriterConfig(analyzer);
IndexWriter iwriter = new IndexWriter(directory, config);
Document doc = new Document();
doc.add(new TextField("id", "001", Field.Store.YES));
doc.add(new TextField("name","中華史", Field.Store.YES));
doc.add(new TextField("content","易中天的中華史", Field.Store.YES));
iwriter.addDocument(doc);
iwriter.close();
System.out.println("*****************--新增--end**************************");
} catch (IOException e) {
e.printStackTrace();

}
}

public static void search(){
try {
Directory directory = FSDirectory.open( Paths.get("F:/tools/lucene_db/users"));
Analyzer analyzer = new SmartChineseAnalyzer();
DirectoryReader ireader = DirectoryReader.open(directory);
IndexSearcher isearcher = new IndexSearcher(ireader);
// Parse a simple query that searches for "text":
QueryParser parser = new QueryParser("name", analyzer);
Query query = parser.parse("中華");
ScoreDoc[] hits = isearcher.search(query, 10).scoreDocs;
// Iterate through the results
SimpleHTMLFormatter simpleHTMLFormatter = new SimpleHTMLFormatter("<span style='color:red'>", "</span>");
Highlighter highlighter = new Highlighter(simpleHTMLFormatter, new QueryScorer(query));
for (int i = 0; i < hits.length; i++) {
Document hitDoc = isearcher.doc(hits[i].doc);
TokenStream tokenStream = analyzer.tokenStream("content", new StringReader(hitDoc.get("name")));
String content = highlighter.getBestFragment(tokenStream, hitDoc.get("name"));
System.out.println("id="+hitDoc.get("id")+"|name="+hitDoc.get("name")+"|content="+content);
}
ireader.close();
directory.close();
System.out.println("*****************--查詢--end**************************");
} catch (Exception e) {
e.printStackTrace();
}
}

public static void upDoc(){
try {
Analyzer analyzer = new SmartChineseAnalyzer();
Directory directory = FSDirectory.open( Paths.get("F:/tools/lucene_db/users"));
IndexWriterConfig config = new IndexWriterConfig(analyzer);
IndexWriter iwriter = new IndexWriter(directory, config);
Document doc = new Document();
doc.add(new TextField("id", "001", Field.Store.YES));
doc.add(new TextField("name","中華史-近代史", Field.Store.YES));
doc.add(new TextField("content","易中天的中華史-近代史", Field.Store.YES));
Term term=new Term("id","001");
iwriter.updateDocument(term,doc);
iwriter.close();
System.out.println("*****************--修改--end**************************");
} catch (IOException e) {
e.printStackTrace();

}
}

public static void delDoc(){
try {
Analyzer analyzer = new SmartChineseAnalyzer();
Directory directory = FSDirectory.open( Paths.get("F:/tools/lucene_db/users"));
IndexWriterConfig config = new IndexWriterConfig(analyzer);
IndexWriter iwriter = new IndexWriter(directory, config);
Document doc = new Document();
doc.add(new TextField("id", "001", Field.Store.YES));
doc.add(new TextField("name","中華史-近代史", Field.Store.YES));
doc.add(new TextField("content","易中天的中華史-近代史", Field.Store.YES));
Term term=new Term("id","001");
iwriter.deleteDocuments(term);
iwriter.close();
System.out.println("*****************--刪除---end**************************");
} catch (IOException e) {
e.printStackTrace();

}
}

}
2、pom.xml
<?xml version="1.0" encoding="UTF-8"?><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>com</groupId>  <artifactId>lucene-01</artifactId>  <version>1.0-SNAPSHOT</version>  <packaging>war</packaging>  <name>lucene-01 Maven Webapp</name>  <!-- FIXME change it to the project's website -->  <url>http://www.example.com</url>  <properties>    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>    <maven.compiler.source>1.7</maven.compiler.source>    <maven.compiler.target>1.7</maven.compiler.target>  </properties>  <dependencies>    <dependency>      <groupId>junit</groupId>      <artifactId>junit</artifactId>      <version>4.11</version>      <scope>test</scope>    </dependency>    <!-- https://mvnrepository.com/artifact/org.apache.lucene/lucene-core -->    <dependency>      <groupId>org.apache.lucene</groupId>      <artifactId>lucene-core</artifactId>      <version>8.0.0</version>    </dependency>    <!-- https://mvnrepository.com/artifact/org.apache.lucene/lucene-queryparser -->    <dependency>      <groupId>org.apache.lucene</groupId>      <artifactId>lucene-queryparser</artifactId>      <version>8.0.0</version>    </dependency>    <!-- https://mvnrepository.com/artifact/org.apache.lucene/lucene-highlighter -->    <dependency>      <groupId>org.apache.lucene</groupId>      <artifactId>lucene-highlighter</artifactId>      <version>8.0.0</version>    </dependency>    <!-- https://mvnrepository.com/artifact/org.apache.lucene/lucene-analyzers-common -->    <dependency>      <groupId>org.apache.lucene</groupId>      <artifactId>lucene-analyzers-common</artifactId>      <version>8.0.0</version>    </dependency>    <!-- https://mvnrepository.com/artifact/org.apache.lucene/lucene-analyzers -->    <dependency>      <groupId>org.apache.lucene</groupId>      <artifactId>lucene-analyzers</artifactId>      <version>3.6.2</version>    </dependency>    <!-- https://mvnrepository.com/artifact/org.apache.lucene/lucene-queries -->    <dependency>      <groupId>org.apache.lucene</groupId>      <artifactId>lucene-queries</artifactId>      <version>8.0.0</version>    </dependency>    <!-- https://mvnrepository.com/artifact/org.apache.lucene/lucene-memory -->    <dependency>      <groupId>org.apache.lucene</groupId>      <artifactId>lucene-memory</artifactId>      <version>8.0.0</version>    </dependency>    <!-- https://mvnrepository.com/artifact/org.apache.lucene/lucene-analyzers-smartcn -->    <dependency>      <groupId>org.apache.lucene</groupId>      <artifactId>lucene-analyzers-smartcn</artifactId>      <version>8.0.0</version>    </dependency>  </dependencies>  <build>    <finalName>lucene-01</finalName>    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->      <plugins>        <plugin>          <artifactId>maven-clean-plugin</artifactId>          <version>3.1.0</version>        </plugin>        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->        <plugin>          <artifactId>maven-resources-plugin</artifactId>          <version>3.0.2</version>        </plugin>        <plugin>          <artifactId>maven-compiler-plugin</artifactId>          <version>3.8.0</version>        </plugin>        <plugin>          <artifactId>maven-surefire-plugin</artifactId>          <version>2.22.1</version>        </plugin>        <plugin>          <artifactId>maven-war-plugin</artifactId>          <version>3.2.2</version>        </plugin>        <plugin>          <artifactId>maven-install-plugin</artifactId>          <version>2.5.2</version>        </plugin>        <plugin>          <artifactId>maven-deploy-plugin</artifactId>          <version>2.8.2</version>        </plugin>      </plugins>    </pluginManagement>  </build></project>
相關文章
相關標籤/搜索