Jadual Kandungan
1. Memperkenalkan perpustakaan Lucene
2 Cipta indeks
3. 执行搜索
4. 使用示例
Rumah Java javaTutorial Bagaimana untuk melaksanakan pengambilan dan carian teks penuh dalam Java

Bagaimana untuk melaksanakan pengambilan dan carian teks penuh dalam Java

Oct 08, 2023 am 09:31 AM
pengaturcaraan java Carian teks penuh (indeks teks penuh) cari

Bagaimana untuk melaksanakan pengambilan dan carian teks penuh dalam Java

Cara melakukan pengambilan dan carian teks penuh dalam Java

Pendapatan dan carian teks penuh ialah teknik untuk mencari kata kunci atau frasa tertentu dalam data teks berskala besar. Dalam aplikasi yang memproses sejumlah besar data teks, seperti enjin carian, sistem e-mel dan sistem pengurusan dokumen, perolehan teks penuh dan fungsi carian adalah sangat penting.

Sebagai bahasa pengaturcaraan yang digunakan secara meluas, Java menyediakan banyak perpustakaan dan alatan yang boleh membantu kami melaksanakan fungsi perolehan dan carian teks penuh. Artikel ini akan memperkenalkan cara menggunakan pustaka Lucene untuk melaksanakan pencarian dan carian teks penuh, serta menyediakan beberapa contoh kod khusus.

1. Memperkenalkan perpustakaan Lucene

Pertama, kita perlu memperkenalkan perpustakaan Lucene ke dalam projek. Pustaka Lucene boleh diperkenalkan ke dalam projek Maven dengan cara berikut:

<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>
Salin selepas log masuk

2 Cipta indeks

Sebelum melakukan carian teks penuh, kita perlu mencipta indeks terlebih dahulu. Indeks ini mengandungi maklumat tentang data teks yang akan dicari supaya kami boleh melakukan operasi carian seterusnya. Berikut ialah contoh kod mudah untuk mencipta indeks:

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);
    }
}
Salin selepas log masuk

Dalam kod contoh di atas, kami menggunakan IndexWriter untuk mencipta indeks dan menggunakan TextField untuk menentukan medan . Apabila menambah kandungan untuk diindeks pada indeks, kita perlu mencipta objek Document dahulu, kemudian menambah medan pada objek, dan akhirnya memanggil kaedah addDocument untuk menambah < kod>Dokumen Objek ditambah pada indeks. 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);
    }
}
Salin selepas log masuk

在上面的示例代码中,我们使用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();
        }
    }
}
Salin selepas log masuk

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

3. Lakukan carian

Selepas mencipta indeks, kami boleh melakukan operasi carian. Berikut ialah kod contoh carian mudah: 🎜rrreee🎜Dalam kod contoh di atas, kami menggunakan IndexSearcher untuk melaksanakan operasi carian. Sebelum melakukan carian, kita perlu mencipta objek Query untuk mewakili pertanyaan yang akan dicari dan menggunakan QueryParser untuk menghuraikan rentetan pertanyaan ke dalam Query objek. Kami kemudian menggunakan kaedah carian IndexSearcher untuk melakukan carian dan mengembalikan kedudukan hasil carian. 🎜🎜4 Contoh Penggunaan🎜🎜Berikut ialah contoh kod yang menggunakan fungsi pencarian dan carian teks penuh: 🎜rrreee🎜Dalam kod contoh di atas, kami mula-mula mencipta Pengindeks untuk mencipta indeks , dan tambahkan beberapa data Teks. Kemudian, kami mencipta Pencari untuk melakukan carian dan mencetak kandungan teks hasil carian. 🎜🎜Melalui kod sampel di atas, kami boleh melaksanakan fungsi pencarian dan carian teks penuh dengan mudah di Java menggunakan perpustakaan Lucene. Menggunakan Lucene, kami boleh mencari kata kunci atau frasa tertentu dengan cekap dalam data teks berskala besar, dengan itu meningkatkan kecekapan dan prestasi aplikasi pemprosesan teks. 🎜

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pengambilan dan carian teks penuh dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk melaksanakan pengambilan dan carian teks penuh dalam Java Bagaimana untuk melaksanakan pengambilan dan carian teks penuh dalam Java Oct 08, 2023 am 09:31 AM

Cara membuat perolehan teks penuh dan carian dalam Java Dapatkan semula dan carian teks penuh ialah teknik untuk mencari kata kunci atau frasa tertentu dalam data teks berskala besar. Dalam aplikasi yang memproses sejumlah besar data teks, seperti enjin carian, sistem e-mel dan sistem pengurusan dokumen, perolehan teks penuh dan fungsi carian adalah sangat penting. Sebagai bahasa pengaturcaraan yang digunakan secara meluas, Java menyediakan banyak perpustakaan dan alatan yang boleh membantu kami melaksanakan fungsi pencarian dan pencarian teks penuh. Artikel ini akan memperkenalkan cara menggunakan pustaka Lucene untuk melaksanakan pengambilan dan carian teks penuh, dan menyediakan a

ChatGPT Java: Bagaimana untuk mencapai penjanaan dan pengoptimuman kod pintar ChatGPT Java: Bagaimana untuk mencapai penjanaan dan pengoptimuman kod pintar Oct 24, 2023 pm 12:18 PM

ChatGPTJava: Bagaimana untuk melaksanakan penjanaan dan pengoptimuman kod pintar Pengenalan: Dengan perkembangan pesat teknologi kecerdasan buatan, penjanaan dan pengoptimuman kod pintar telah menjadi topik hangat dalam bidang pengaturcaraan. ChatGPT ialah model bahasa yang berkuasa berdasarkan OpenAI yang membolehkan interaksi antara bahasa semula jadi dan mesin. Artikel ini akan memperkenalkan cara menggunakan ChatGPT untuk melaksanakan penjanaan kod pintar dan operasi pengoptimuman, serta menyediakan beberapa contoh kod khusus. 1. Penjanaan kod pintar: Gunakan ChatGPT untuk membina penjanaan kod pintar

Mengapa kita harus mengikuti konvensyen penamaan Java? Mengapa kita harus mengikuti konvensyen penamaan Java? Sep 19, 2023 pm 01:57 PM

Konvensyen penamaan Java menjadikan program lebih mudah difahami dengan menjadikannya lebih mudah dibaca. Di Jawa, nama kelas secara amnya mestilah kata nama, dalam bentuk tajuk bermula dengan huruf besar, dengan huruf pertama setiap perkataan dihuruf besar. Nama antara muka secara amnya mestilah kata sifat, dalam bentuk tajuk, bermula dengan huruf besar, dengan huruf pertama setiap perkataan dihuruf besar. Mengapa anda perlu mengikut piawaian penamaan Java Kurangkan usaha yang diperlukan untuk membaca dan memahami kod sumber. Membenarkan semakan kod menumpukan pada isu yang lebih penting daripada sintaks dan standard penamaan. Dayakan alat semakan kualiti kod untuk memberi tumpuan terutamanya pada isu penting dan bukannya sintaks dan pilihan gaya. Konvensyen Penamaan untuk Pengecam Jenis Berbeza Nama pakej hendaklah semua huruf kecil. Contoh packagecom.tutorialspoint;Nama antara muka antara muka hendaklah dalam huruf besar

Bagaimana untuk menyelesaikan pengecualian format data Java (DataFormatException) Bagaimana untuk menyelesaikan pengecualian format data Java (DataFormatException) Aug 27, 2023 am 10:14 AM

Bagaimana untuk menyelesaikan pengecualian format data Java (DataFormatException) Dalam pengaturcaraan Java, kita sering menghadapi pelbagai situasi yang tidak normal. Antaranya, pengecualian format data (DataFormatException) adalah masalah biasa tetapi juga sangat mencabar. Pengecualian ini akan dibuang apabila data input tidak dapat memenuhi keperluan format yang ditentukan. Menyelesaikan anomali ini memerlukan kemahiran dan pengalaman tertentu. Artikel ini akan memperincikan cara menyelesaikan pengecualian format data Java dan menyediakan beberapa contoh kod

ChatGPT Java: Bagaimana untuk melaksanakan pengekstrakan maklumat pintar dan pemprosesan berstruktur ChatGPT Java: Bagaimana untuk melaksanakan pengekstrakan maklumat pintar dan pemprosesan berstruktur Oct 28, 2023 am 10:00 AM

ChatGPTJava: Bagaimana untuk melaksanakan pengekstrakan maklumat pintar dan pemprosesan berstruktur, contoh kod khusus diperlukan Pengenalan: Dengan perkembangan pesat teknologi kecerdasan buatan, pengekstrakan maklumat pintar dan pemprosesan berstruktur memainkan peranan yang semakin penting dalam bidang pemprosesan data. Dalam artikel ini, kami akan memperkenalkan cara menggunakan ChatGPTJava untuk melaksanakan pengekstrakan maklumat pintar dan fungsi pemprosesan berstruktur, dan menyediakan contoh kod khusus. 1. Pengekstrakan maklumat pintar Pengekstrakan maklumat pintar merujuk kepada proses mengekstrak maklumat utama daripada data tidak berstruktur. Dalam Ja

Bagaimana untuk melaksanakan algoritma isihan radix menggunakan java Bagaimana untuk melaksanakan algoritma isihan radix menggunakan java Sep 19, 2023 pm 03:39 PM

Bagaimana untuk melaksanakan algoritma isihan radix menggunakan Java? Algoritma isihan radix ialah algoritma isihan bukan perbandingan yang mengisih unsur berdasarkan nilai bitnya. Idea terasnya adalah untuk mengumpulkan nombor yang akan diisih mengikut unit, puluh, ratusan dan digit lain, dan kemudian mengisih setiap digit secara bergilir-gilir untuk akhirnya mendapatkan urutan tertib. Berikut akan memperkenalkan secara terperinci cara melaksanakan algoritma isihan radix menggunakan Java dan memberikan contoh kod. Pertama, algoritma pengisihan radix perlu menyediakan tatasusunan dua dimensi untuk menyimpan nombor yang hendak diisih. Bilangan baris dalam tatasusunan ditentukan oleh bilangan bit, contohnya

Di Jawa, bagaimana untuk menambah elemen baharu pada tatasusunan? Di Jawa, bagaimana untuk menambah elemen baharu pada tatasusunan? Jan 03, 2024 pm 03:30 PM

Menambah elemen baharu pada tatasusunan ialah operasi biasa di Jawa dan boleh dicapai menggunakan pelbagai kaedah. Artikel ini akan memperkenalkan beberapa kaedah biasa untuk menambah elemen pada tatasusunan dan memberikan contoh kod yang sepadan. 1. Cara biasa untuk menggunakan tatasusunan baharu ialah mencipta tatasusunan baharu, menyalin elemen tatasusunan asal ke tatasusunan baharu dan menambah elemen baharu pada penghujung tatasusunan baharu. Langkah-langkah khusus adalah seperti berikut: Buat tatasusunan baharu yang saiznya 1 lebih besar daripada tatasusunan asal. Ini kerana elemen baharu sedang ditambah. Salin elemen tatasusunan asal ke tatasusunan baharu. Tambahkan pada penghujung tatasusunan baharu

Bagaimana untuk melaksanakan sistem beli-belah runcit suis Java dengan fungsi perkongsian sosial Bagaimana untuk melaksanakan sistem beli-belah runcit suis Java dengan fungsi perkongsian sosial Nov 01, 2023 pm 05:15 PM

Cara melaksanakan sistem beli-belah runcit Java switch dengan fungsi perkongsian sosial Dengan perkembangan teknologi dan populariti media sosial, semakin ramai orang terbiasa berkongsi pengalaman pembelian dan pemikiran mereka semasa membeli-belah. Bagi memenuhi keperluan pengguna, sistem membeli-belah yang baik bukan sahaja perlu menyelesaikan pembelian dengan mudah dan cepat, tetapi juga perlu menyediakan fungsi perkongsian sosial. Artikel ini akan memperkenalkan cara melaksanakan sistem beli-belah runcit suis Java dengan fungsi perkongsian sosial. Pertama, kita perlu menentukan saluran perkongsian sosial yang akan dilaksanakan termasuk WeChat, Weibo, QQ, dll. Di Jawa, anda boleh menggunakan yang ketiga

See all articles