Inhaltsverzeichnis
1. Einführung der Lucene-Bibliothek
2. Erstellen Sie einen Index.
3. 执行搜索
4. 使用示例
Heim Java javaLernprogramm So führen Sie eine Volltextsuche und -suche in Java durch

So führen Sie eine Volltextsuche und -suche in Java durch

Oct 08, 2023 am 09:31 AM
java编程 (java programming) Volltextsuche (Volltextindex) suchen

So führen Sie eine Volltextsuche und -suche in Java durch

So führen Sie den Volltextabruf und die Volltextsuche in Java durch

Der Volltextabruf und die Volltextsuche sind eine Technik zum Auffinden bestimmter Schlüsselwörter oder Phrasen in umfangreichen Textdaten. In Anwendungen, die große Textdatenmengen verarbeiten, wie Suchmaschinen, E-Mail-Systeme und Dokumentenverwaltungssysteme, sind Volltextabruf- und Suchfunktionen sehr wichtig.

Als weit verbreitete Programmiersprache bietet Java eine Fülle von Bibliotheken und Tools, die uns bei der Implementierung von Volltextabruf- und Suchfunktionen unterstützen können. In diesem Artikel wird die Verwendung der Lucene-Bibliothek zum Implementieren des Volltextabrufs und der Suche vorgestellt und einige spezifische Codebeispiele bereitgestellt.

1. Einführung der Lucene-Bibliothek

Zuerst müssen wir die Lucene-Bibliothek in das Projekt einführen. Die Lucene-Bibliothek kann auf folgende Weise in das Maven-Projekt eingeführt werden:

<dependencies>
    <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-core</artifactId>
        <version>8.10.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-analyzers-common</artifactId>
        <version>8.10.1</version>
    </dependency>
</dependencies>
Nach dem Login kopieren

2. Erstellen Sie einen Index.

Bevor wir eine Volltextsuche durchführen, müssen wir zunächst einen Index erstellen. Dieser Index enthält Informationen über die zu durchsuchenden Textdaten, damit wir nachfolgende Suchvorgänge durchführen können. Das Folgende ist ein einfacher Beispielcode zum Erstellen eines Index:

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.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;

import java.io.IOException;
import java.nio.file.Paths;

public class Indexer {
    private IndexWriter indexWriter;

    public Indexer(String indexDir) throws IOException {
        Directory dir = FSDirectory.open(Paths.get(indexDir));
        Analyzer analyzer = new StandardAnalyzer();
        IndexWriterConfig config = new IndexWriterConfig(analyzer);
        indexWriter = new IndexWriter(dir, config);
    }

    public void close() throws IOException {
        indexWriter.close();
    }

    public void addDocument(String content) throws IOException {
        Document doc = new Document();
        doc.add(new TextField("content", content, Field.Store.YES));
        indexWriter.addDocument(doc);
    }
}
Nach dem Login kopieren

Im obigen Beispielcode verwenden wir IndexWriter, um den Index zu erstellen, und verwenden TextField, um das Feld zu definieren . Wenn wir zu indizierende Inhalte zum Index hinzufügen, müssen wir zunächst ein Document-Objekt erstellen, dann dem Objekt Felder hinzufügen und schließlich die Methode addDocument aufrufen, um das < hinzuzufügen code>DokumentDas Objekt wird dem Index hinzugefügt. IndexWriter来创建索引,并使用TextField来定义要索引的字段。将要索引的内容添加到索引中时,我们需要先创建一个Document对象,然后将字段添加到该对象中,最后调用addDocument方法将Document对象添加到索引中。

3. 执行搜索

创建完索引后,我们就可以进行搜索操作了。以下是一个简单的搜索示例代码:

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
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 java.io.IOException;
import java.nio.file.Paths;

public class Searcher {
    private IndexSearcher indexSearcher;
    private QueryParser queryParser;

    public Searcher(String indexDir) throws IOException {
        Directory dir = FSDirectory.open(Paths.get(indexDir));
        Analyzer analyzer = new StandardAnalyzer();
        IndexReader indexReader = DirectoryReader.open(dir);
        indexSearcher = new IndexSearcher(indexReader);
        queryParser = new QueryParser("content", analyzer);
    }

    public ScoreDoc[] search(String queryString, int numResults) throws Exception {
        Query query = queryParser.parse(queryString);
        TopDocs topDocs = indexSearcher.search(query, numResults);
        return topDocs.scoreDocs;
    }

    public Document getDocument(int docID) throws IOException {
        return indexSearcher.doc(docID);
    }
}
Nach dem Login kopieren

在上面的示例代码中,我们使用IndexSearcher来执行搜索操作。在执行搜索之前,我们需要先创建一个Query对象来表示要搜索的查询,并使用QueryParser来解析查询字符串为Query对象。然后,我们使用IndexSearchersearch方法执行搜索,并返回搜索结果的排名。

4. 使用示例

下面是一个使用全文检索和搜索功能的示例代码:

public class Main {
    public static void main(String[] args) {
        String indexDir = "/path/to/index/dir";
        
        try {
            Indexer indexer = new Indexer(indexDir);
            indexer.addDocument("Hello, world!");
            indexer.addDocument("Java is a programming language.");
            indexer.addDocument("Lucene is a full-text search engine.");
            indexer.close();

            Searcher searcher = new Searcher(indexDir);
            ScoreDoc[] results = searcher.search("Java", 10);
            for (ScoreDoc result : results) {
                Document doc = searcher.getDocument(result.doc);
                System.out.println(doc.getField("content").stringValue());
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
Nach dem Login kopieren

在上面的示例代码中,我们首先创建一个Indexer来创建索引,并添加一些文本数据。然后,我们创建一个Searcher

3. Suche durchführen

Nachdem wir den Index erstellt haben, können wir Suchvorgänge durchführen. Das Folgende ist ein einfacher Suchbeispielcode: 🎜rrreee🎜Im obigen Beispielcode verwenden wir IndexSearcher, um den Suchvorgang durchzuführen. Bevor wir eine Suche durchführen, müssen wir ein Query-Objekt erstellen, um die zu durchsuchende Abfrage darzustellen, und QueryParser verwenden, um die Abfragezeichenfolge in Queryzu analysieren > Objekt. Anschließend verwenden wir die Methode search von IndexSearcher, um die Suche durchzuführen und die Rangfolge der Suchergebnisse zurückzugeben. 🎜🎜4. Anwendungsbeispiel🎜🎜Das Folgende ist ein Beispielcode, der die Volltextabruf- und Suchfunktion verwendet: 🎜rrreee🎜Im obigen Beispielcode erstellen wir zunächst einen Indexer, um einen Index zu erstellen und fügen Sie einige Textdaten hinzu. Anschließend erstellen wir einen Sucher, um die Suche durchzuführen und den Textinhalt der Suchergebnisse auszudrucken. 🎜🎜Durch den obigen Beispielcode können wir mithilfe der Lucene-Bibliothek problemlos Volltextabruf- und Suchfunktionen in Java implementieren. Mit Lucene können wir bestimmte Schlüsselwörter oder Phrasen in umfangreichen Textdaten effizient finden und so die Effizienz und Leistung von Textverarbeitungsanwendungen verbessern. 🎜

Das obige ist der detaillierte Inhalt vonSo führen Sie eine Volltextsuche und -suche in Java durch. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So führen Sie eine Volltextsuche und -suche in Java durch So führen Sie eine Volltextsuche und -suche in Java durch Oct 08, 2023 am 09:31 AM

So führen Sie den Volltextabruf und die Volltextsuche in Java durch. Beim Volltextabruf und der Volltextsuche handelt es sich um eine Technik zum Auffinden bestimmter Schlüsselwörter oder Phrasen in umfangreichen Textdaten. In Anwendungen, die große Textdatenmengen verarbeiten, wie Suchmaschinen, E-Mail-Systeme und Dokumentenverwaltungssysteme, sind Volltextabruf- und Suchfunktionen sehr wichtig. Als weit verbreitete Programmiersprache bietet Java eine Fülle von Bibliotheken und Tools, die uns bei der Implementierung von Volltextabruf- und Suchfunktionen unterstützen können. In diesem Artikel wird die Verwendung der Lucene-Bibliothek zum Implementieren des Volltextabrufs und der Suche vorgestellt und eine bereitgestellt

ChatGPT Java: So erreichen Sie eine intelligente Codegenerierung und -optimierung ChatGPT Java: So erreichen Sie eine intelligente Codegenerierung und -optimierung Oct 24, 2023 pm 12:18 PM

ChatGPTJava: So implementieren Sie intelligente Codegenerierung und -optimierung Einführung: Mit der rasanten Entwicklung der Technologie der künstlichen Intelligenz sind intelligente Codegenerierung und -optimierung zu heißen Themen im Programmierbereich geworden. ChatGPT ist ein leistungsstarkes Sprachmodell auf Basis von OpenAI, das die Interaktion zwischen natürlicher Sprache und Maschinen ermöglicht. In diesem Artikel wird erläutert, wie Sie mit ChatGPT intelligente Codegenerierungs- und Optimierungsvorgänge implementieren, und einige spezifische Codebeispiele bereitstellen. 1. Intelligente Codegenerierung: Verwenden Sie ChatGPT, um eine intelligente Codegenerierung zu erstellen

Warum sollten wir Java-Namenskonventionen befolgen? Warum sollten wir Java-Namenskonventionen befolgen? Sep 19, 2023 pm 01:57 PM

Java-Namenskonventionen erleichtern das Verständnis von Programmen, indem sie sie leichter lesbar machen. In Java sollten Klassennamen im Allgemeinen Substantive sein, die in Titelform mit einem Großbuchstaben beginnen, wobei der erste Buchstabe jedes Wortes groß geschrieben wird. Schnittstellennamen sollten normalerweise Adjektive in Titelform sein, die mit einem Großbuchstaben beginnen, wobei der erste Buchstabe jedes Wortes groß geschrieben wird. Warum Sie Java-Namensstandards befolgen sollten Reduzieren Sie den Aufwand, der zum Lesen und Verstehen des Quellcodes erforderlich ist. Ermöglicht Codeüberprüfungen, sich auf wichtigere Themen als Syntax- und Benennungsstandards zu konzentrieren. Aktivieren Sie Tools zur Überprüfung der Codequalität, um sich in erster Linie auf wichtige Themen statt auf Syntax- und Stilpräferenzen zu konzentrieren. Namenskonventionen für verschiedene Typbezeichner. Paketnamen sollten ausschließlich in Kleinbuchstaben geschrieben werden. Beispiel packagecom.tutorialspoint;Schnittstellenname sollte in Großbuchstaben angegeben werden

So lösen Sie eine Java-Datenformatausnahme (DataFormatException) So lösen Sie eine Java-Datenformatausnahme (DataFormatException) Aug 27, 2023 am 10:14 AM

So lösen Sie eine Java-Datenformatausnahme (DataFormatException) Bei der Java-Programmierung treten häufig verschiedene abnormale Situationen auf. Unter diesen ist die Datenformatausnahme (DataFormatException) ein häufiges, aber auch sehr herausforderndes Problem. Diese Ausnahme wird ausgelöst, wenn die Eingabedaten die angegebenen Formatanforderungen nicht erfüllen können. Die Lösung dieser Anomalie erfordert bestimmte Fähigkeiten und Erfahrung. In diesem Artikel wird detailliert beschrieben, wie Ausnahmen im Java-Datenformat behoben werden, und es werden einige Codebeispiele bereitgestellt

ChatGPT Java: So implementieren Sie intelligente Informationsextraktion und strukturierte Verarbeitung ChatGPT Java: So implementieren Sie intelligente Informationsextraktion und strukturierte Verarbeitung Oct 28, 2023 am 10:00 AM

ChatGPTJava: Für die Implementierung intelligenter Informationsextraktion und strukturierter Verarbeitung sind spezifische Codebeispiele erforderlich. Einführung: Mit der rasanten Entwicklung der Technologie der künstlichen Intelligenz spielen intelligente Informationsextraktion und strukturierte Verarbeitung eine immer wichtigere Rolle im Bereich der Datenverarbeitung. In diesem Artikel stellen wir die Verwendung von ChatGPTJava zur Implementierung intelligenter Informationsextraktion und strukturierter Verarbeitungsfunktionen vor und stellen spezifische Codebeispiele bereit. 1. Intelligente Informationsextraktion Unter intelligenter Informationsextraktion versteht man den Prozess der Extraktion wichtiger Informationen aus unstrukturierten Daten. In Ja

So implementieren Sie den Radix-Sortieralgorithmus mit Java So implementieren Sie den Radix-Sortieralgorithmus mit Java Sep 19, 2023 pm 03:39 PM

Wie implementiert man einen Radix-Sortieralgorithmus mit Java? Der Radix-Sortieralgorithmus ist ein nicht vergleichender Sortieralgorithmus, der Elemente basierend auf ihrem Bitwert sortiert. Seine Kernidee besteht darin, die zu sortierenden Zahlen nach Einer-, Zehner-, Hunderter- und anderen Ziffern zu gruppieren und dann jede Ziffer nacheinander zu sortieren, um schließlich eine geordnete Reihenfolge zu erhalten. Im Folgenden wird detailliert beschrieben, wie der Radix-Sortieralgorithmus mithilfe von Java implementiert wird, und es werden Codebeispiele bereitgestellt. Zunächst muss der Basissortieralgorithmus ein zweidimensionales Array vorbereiten, um die zu sortierenden Zahlen zu speichern. Die Anzahl der Zeilen im Array wird beispielsweise durch die Anzahl der Bits bestimmt

Wie füge ich in Java neue Elemente zu einem Array hinzu? Wie füge ich in Java neue Elemente zu einem Array hinzu? Jan 03, 2024 pm 03:30 PM

Das Hinzufügen neuer Elemente zu einem Array ist ein häufiger Vorgang in Java und kann mit verschiedenen Methoden durchgeführt werden. In diesem Artikel werden mehrere gängige Methoden zum Hinzufügen von Elementen zu einem Array vorgestellt und entsprechende Codebeispiele bereitgestellt. 1. Eine übliche Methode zur Verwendung eines neuen Arrays besteht darin, ein neues Array zu erstellen, die Elemente des ursprünglichen Arrays in das neue Array zu kopieren und am Ende des neuen Arrays neue Elemente hinzuzufügen. Die spezifischen Schritte lauten wie folgt: Erstellen Sie ein neues Array, dessen Größe um 1 größer ist als das ursprüngliche Array. Dies liegt daran, dass ein neues Element hinzugefügt wird. Kopieren Sie die Elemente des ursprünglichen Arrays in das neue Array. Am Ende des neuen Arrays hinzufügen

So implementieren Sie ein Java-Switch-Lebensmitteleinkaufssystem mit Social-Sharing-Funktion So implementieren Sie ein Java-Switch-Lebensmitteleinkaufssystem mit Social-Sharing-Funktion Nov 01, 2023 pm 05:15 PM

So implementieren Sie ein Java-Switch-Einkaufssystem mit Social-Sharing-Funktion Mit der Entwicklung der Technologie und der Popularität sozialer Medien sind es immer mehr Menschen gewohnt, ihre Einkaufserfahrungen und Gedanken beim Einkaufen zu teilen. Um den Bedürfnissen der Nutzer gerecht zu werden, muss ein gutes Einkaufssystem nicht nur Einkäufe bequem und schnell abschließen, sondern auch Social-Sharing-Funktionen bereitstellen. In diesem Artikel wird erläutert, wie Sie ein Java-Switch-Lebensmitteleinkaufssystem mit Social-Sharing-Funktion implementieren. Zunächst müssen wir die zu implementierenden Social-Sharing-Kanäle festlegen, darunter WeChat, Weibo, QQ usw. In Java können Sie den dritten verwenden

See all articles