luceneAan de slag met Lucene


Opmerkingen

Apache Lucene is een op Java gebaseerde full text-zoekbibliotheek.

versies

Versie Publicatiedatum
2.9.4 2010-12-03
3.0.3 2010-12-03
3.6.2 2013/01/16
4.10.4 2015/10/14
5.5.2 2016/06/24
6.3.0 2016/11/08

Hallo Wereld

Dit eenvoudige Lucene-voorbeeld maakt een eenvoudige index en zoekt erop.

Opmerking: RAMDirectory maakt een geheugenresidentiële index en is handig voor experimenten en testen, maar in de praktijk moeten de meeste mensen een index in het bestandssysteem hebben opgeslagen (zie FSDirectory.open ).

import java.io.IOException;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.*;
import org.apache.lucene.index.*;
import org.apache.lucene.queryparser.classic.*;
import org.apache.lucene.search.*;
import org.apache.lucene.store.*;

public class HelloLucene {
    public static void main(String[] args) throws IOException, ParseException
    {
        //Create a new index and open a writer
        Directory dir = new RAMDirectory();
        Analyzer analyzer = new StandardAnalyzer();
        IndexWriterConfig config = new IndexWriterConfig(analyzer);
        IndexWriter writer = new IndexWriter(dir, config);
    
        //Create a document to index
        Document doc = new Document();
        doc.add(new TextField("text", "Hello World!", Field.Store.YES));
    
        //Index the document and close the writer
        System.out.println("Indexing document: " + doc);
        writer.addDocument(doc);
        writer.close();
    
        //Open an IndexSearcher
        IndexReader reader = DirectoryReader.open(dir);
        IndexSearcher searcher = new IndexSearcher(reader);
    
        //Create a query
        QueryParser parser = new QueryParser("text", analyzer);
        Query query = parser.parse("world");
    
        //Search for results of the query in the index
        System.out.println("Searching for: \"" + query + "\"");
        TopDocs results = searcher.search(query, 10);
        for (ScoreDoc result : results.scoreDocs) {
            Document resultDoc = searcher.doc(result.doc);
            System.out.println("score: " + result.score + 
                    " -- text: " + resultDoc.get("text"));
        }
        reader.close();
    }
}
 

Opstelling

Lucene is een Java-bibliotheek. Als u nog geen Java-ontwikkelomgeving hebt ingesteld, raadpleegt u de Java-documentatie .

Download de nieuwste versie van Lucene van de Apache-website en pak deze uit.

Voeg de vereiste potten toe aan je klassenpad. De volgende potten zijn vereist voor veel projecten, waaronder het Hello World-voorbeeld hier:

  • core/lucene-core-6.1.0.jar : Core Lucene-functionaliteit.
  • core/analysis/common/lucene-analyzers-common-6.1.0.jar : biedt een verscheidenheid aan analyzers, waaronder de alomtegenwoordige StandardAnalyzer.
  • queryparser/lucene-queryparser-6.1.0.jar : biedt de query-parser.

Plaats de code in HelloLucene.java . Compileer het met deze opdracht:

javac -classpath "core/*:queryparser/*" HelloLucene.java
 

En voer het uit met dit commando:

java -classpath ".:core/*:queryparser/*" HelloLucene