Lucene Tutorial (ii) Search preliminary

Source: Internet
Author: User
Tags deprecated

Search can be divided into the following steps:

    1. Create directory
    2. Create Indexreader
    3. Create indexsearch based on Indexreader
    4. Create a search query
    5. Search by searcher and return Topdocs
    6. Get Scoredoc objects based on Topdocs
    7. Get specific document objects based on searcher and Scoredoc objects
    8. Get the values you want based on the Document object
Here is the example code: version 3.5:3.5 version is relatively simple, only the Lucene core package Lucene-core can be, the pom file is as follows:

<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.darren.lucene35.helloworld</groupId> < Artifactid>lucene35_helloworld</artifactid> <version>0.0.1-SNAPSHOT</version> <packaging >jar</packaging> <name>lucene35_helloworld</name> <url>http://maven.apache.org</        Url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <lucene.version>3.5.0</lucene.version> </properties> <dependencies> &LT;DEPENDENCY&G            T <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12& Lt;/version> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.lucene</groupId>        <artifactId>lucene-core</artifactId> <version>${lucene.version}</version> </dependency> </dependencies></project>
The example code is as follows:

Package Com.darren.lucene35;import Java.io.file;import Java.io.filereader;import Org.apache.lucene.analysis.analyzer;import Org.apache.lucene.analysis.standard.standardanalyzer;import Org.apache.lucene.document.document;import Org.apache.lucene.document.field;import Org.apache.lucene.index.indexreader;import Org.apache.lucene.index.indexwriter;import Org.apache.lucene.index.indexwriterconfig;import Org.apache.lucene.queryparser.queryparser;import Org.apache.lucene.search.indexsearcher;import Org.apache.lucene.search.query;import Org.apache.lucene.search.scoredoc;import Org.apache.lucene.search.topdocs;import Org.apache.lucene.store.directory;import Org.apache.lucene.store.fsdirectory;import Org.apache.lucene.util.version;public class HelloLucene {/** * search * * public void Search () {Indexrea        Der Indexreader = null;            try {//1, create directory directory directory = Fsdirectory.open (new File ("F:/test/lucene/index")); 2. Create IndexreadeR indexreader = indexreader.open (directory);            3, according to Indexreader create Indexsearch indexsearcher indexsearcher = new Indexsearcher (Indexreader);            4. Create search query//Use the default standard word breaker analyzer Analyzer = new StandardAnalyzer (version.lucene_35); In content search Darren//Create parser to determine what to search for, the second parameter is the domain of the search queryparser Queryparser = new Queryparser (            version.lucene_35, "content", analyzer);            Create a query that represents the search domain for content containing Darren document query query = Queryparser.parse ("Darren");            5. Search according to searcher and return topdocs topdocs topdocs = indexsearcher.search (query, 10);            6, according to Topdocs get Scoredoc object scoredoc[] Scoredocs = Topdocs.scoredocs; for (Scoredoc Scoredoc:scoredocs) {///7, Get specific Document object based on searcher and Scoredoc object document Doc                Ument = Indexsearcher.doc (Scoredoc.doc); 8. Get the required value according to the Document object SYSTEM.OUT.PRintln (Document.get ("filename") + "" + document.get ("filepath");        }} catch (Exception e) {e.printstacktrace ();                } finally {try {if (Indexreader! = null) {Indexreader.clone ();            }} catch (Exception e) {e.printstacktrace (); }        }    }}

version 4.5:
Version 4.5 requires Lucene core Pack Lucene-core and query package Lucene-queryparser, from the 4.0 version after the word breaker is detached from the core package, the Pom file is as follows:
<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.darren.lucene45.helloworld</groupId> < Artifactid>lucene45_helloworld</artifactid> <version>0.0.1-SNAPSHOT</version> <packaging >jar</packaging> <name>lucene45_helloworld</name> <url>http://maven.apache.org</        Url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <lucene.version>4.5.1</lucene.version> </properties> <dependencies> &LT;DEPENDENCY&G            T <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12& Lt;/version> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.lucene</groupId>        <artifactId>lucene-core</artifactId> <version>${lucene.version}</version>            </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-queryparser</artifactId> <version>${lucene.version}</version> </dependency> </dependencies></project>
The example code is as follows:
Package Com.darren.lucene45;import Java.io.file;import Java.io.filereader;import Org.apache.lucene.analysis.analyzer;import Org.apache.lucene.analysis.standard.standardanalyzer;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.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.TopDocs; Import Org.apache.lucene.store.directory;import Org.apache.lucene.store.fsdirectory;import Org.apache.lucene.util.version;public class HelloLucene {/** * search * * public void Search () {Director        Yreader directoryreader = null; try {//1, create directory directory directory = Fsdirectory.open(New File ("F:/test/lucene/index"));             2. Create Indexreader/** * Note that reader differs from version 3.5: * * So use Directoryreader * * @Deprecated public static Directoryreader open (final directory directory) throws IOException {retur n * Directoryreader.open (directory);            }////The following methods are obsolete//Indexreader Indexreader = indexreader.open (directory);            Directoryreader = directoryreader.open (directory);            3, according to Indexreader create Indexsearch indexsearcher indexsearcher = new Indexsearcher (Directoryreader);            4. Create search Query Analyzer Analyzer = new StandardAnalyzer (version.lucene_45);             /** * Note differs from version 3.5: * * Requires the introduction of the Lucene-queryparser package, since the Lucene-queryparser package from the 4.0 release is detached from the core package *///Create parser to determine the contents of the file to search for, the second parameter is the domain searched queryparser queryparser = new Queryparser (Version.lucen E_45, "Content", analyzer);            Create a query that represents the search domain for content containing Darren document query query = Queryparser.parse ("Darren");            5. Search according to searcher and return topdocs topdocs topdocs = indexsearcher.search (query, 10);            6, according to Topdocs get Scoredoc object scoredoc[] Scoredocs = Topdocs.scoredocs; for (Scoredoc Scoredoc:scoredocs) {///7, Get specific Document object based on searcher and Scoredoc object document Doc                Ument = Directoryreader.document (Scoredoc.doc);            8, according to the document object to obtain the desired value SYSTEM.OUT.PRINTLN (document.get ("filename") + "" + document.get ("filepath");        }} catch (Exception e) {e.printstacktrace ();                } finally {try {if (Directoryreader! = null) {directoryreader.close ();            }} catch (Exception e) {e.printstacktrace (); }        }    }}
version 5.0:
As with version 5.0 and 4.5, the pom file looks like this:
<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.darren.lucene50.helloworld</groupId> < Artifactid>lucene50_helloworld</artifactid> <version>0.0.1-SNAPSHOT</version> <packaging >jar</packaging> <name>lucene50_helloworld</name> <url>http://maven.apache.org</        Url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <lucene.version>5.0.0</lucene.version> </properties> <dependencies> &LT;DEPENDENCY&G            T <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12& Lt;/version> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.lucene</groupId>        <artifactId>lucene-core</artifactId> <version>${lucene.version}</version>            </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-queryparser</artifactId> <version>${lucene.version}</version> </dependency> </dependencies></project>
The example code is as follows:
Package Com.darren.lucene50;import Java.io.file;import Java.io.filereader;import java.nio.file.filesystems;import Org.apache.lucene.analysis.analyzer;import Org.apache.lucene.analysis.standard.standardanalyzer;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.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.TopDocs;     Import Org.apache.lucene.store.directory;import Org.apache.lucene.store.fsdirectory;public class HelloLucene {/**        * Search */public void search () {Directoryreader directoryreader = null; try {//1, create directory directory directory = Fsdirectory.open (FileSystems.getdefault (). GetPath ("F:/test/lucene/index"));             2. Create Indexreader/** * Note that reader differs from version 3.5: * * So use Directoryreader * * @Deprecated public static Directoryreader open (final directory directory) throws IOException {retur n * Directoryreader.open (directory); } * * But same as version 4.5 *///The following method is obsolete//Indexreader INDEXR            Eader = indexreader.open (directory);            Directoryreader = directoryreader.open (directory);            3, according to Indexreader create Indexsearch indexsearcher indexsearcher = new Indexsearcher (Directoryreader);             4. Create search Query/** * Note StandardAnalyzer differs from version 4.5 of 3.5: * * No version number required            */Analyzer Analyzer = new StandardAnalyzer (); Create parser to determine what to search for the contents of the file, the first parameter is the domain of the search/** * Note queryparser with 3.5 version4.5 versions are different: * * No version number required */queryparser Queryparser = new Queryparser ("content")            , analyzer);            Create a query that represents the search domain for content containing Darren document query query = Queryparser.parse ("Darren");            5. Search according to searcher and return topdocs topdocs topdocs = indexsearcher.search (query, 10);            6, according to Topdocs get Scoredoc object scoredoc[] Scoredocs = Topdocs.scoredocs; for (Scoredoc Scoredoc:scoredocs) {///7, Get specific Document object based on searcher and Scoredoc object document Doc                Ument = Indexsearcher.doc (Scoredoc.doc);            8, according to the document object to obtain the desired value SYSTEM.OUT.PRINTLN (document.get ("filename") + "" + document.get ("filepath");        }} catch (Exception e) {e.printstacktrace ();                } finally {try {if (Directoryreader! = null) {directoryreader.close ();            }} catch (Exception e) {    E.printstacktrace (); }        }    }}
Test code:
Package Com.darren.lucene50;import Org.junit.test;public class Hellolucenetest {    @Test public    void Testsearch () {        HelloLucene hellolucene = new HelloLucene ();        Hellolucene.search ();    }}

Lucene Tutorial (ii) Search preliminary

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.