目次
1. Lucene ライブラリを導入する
2. インデックスの作成
3. 検索の実行
4. 使用例
ホームページ Java &#&チュートリアル Java で全文取得と検索を実行する方法

Java で全文取得と検索を実行する方法

Oct 08, 2023 am 09:31 AM
Javaプログラミング 全文検索(全文インデックス) 検索

Java で全文取得と検索を実行する方法

Java で全文検索と全文検索を実行する方法

全文検索と検索は、大規模なテキスト データから特定のキーワードや語句を見つけるための手法です。 。検索エンジン、電子メール システム、文書管理システムなど、大量のテキスト データを処理するアプリケーションでは、全文検索および検索機能が非常に重要です。

Java は広く使用されているプログラミング言語として、全文検索および検索機能の実装に役立つ豊富なライブラリとツールを提供します。この記事では、Lucene ライブラリを使用して全文検索と検索を実装する方法を紹介し、いくつかの具体的なコード例を示します。

1. Lucene ライブラリを導入する

まず、Lucene ライブラリをプロジェクトに導入する必要があります。 Lucene ライブラリは、次の方法で Maven プロジェクトに導入できます:

<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>
ログイン後にコピー

2. インデックスの作成

全文検索を実行する前に、まずインデックスを作成する必要があります。このインデックスには、後続の検索操作を実行できるように、検索対象のテキスト データに関する関連情報が含まれています。以下は、インデックスを作成するための簡単なコード例です。

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);
    }
}
ログイン後にコピー

上記のコード例では、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);
    }
}
ログイン後にコピー

上記のサンプル コードでは、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();
        }
    }
}
ログイン後にコピー

上記サンプルコードでは、まず#を作成します。 ## Indexer を使用してインデックスを作成し、テキスト データを追加します。次に、検索を実行し、検索結果のテキスト コンテンツを出力するための Searcher を作成します。

上記のサンプル コードを通じて、Lucene ライブラリを使用して、Java で全文検索および検索機能を簡単に実装できます。 Lucene を使用すると、大規模なテキスト データから特定のキーワードやフレーズを効率的に検索できるため、テキスト処理アプリケーションの効率とパフォーマンスが向上します。

以上がJava で全文取得と検索を実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Java で全文取得と検索を実行する方法 Java で全文取得と検索を実行する方法 Oct 08, 2023 am 09:31 AM

Java で全文検索と全文検索を行う方法 全文検索と検索は、大規模なテキスト データから特定のキーワードや語句を検索するための手法です。検索エンジン、電子メール システム、文書管理システムなど、大量のテキスト データを処理するアプリケーションでは、全文検索および検索機能が非常に重要です。広く使用されているプログラミング言語として、Java は、全文検索および検索機能の実装に役立つ豊富なライブラリとツールを提供します。この記事では、Lucene ライブラリを使用して全文検索と検索を実装し、

ChatGPT Java: インテリジェントなコード生成と最適化を実現する方法 ChatGPT Java: インテリジェントなコード生成と最適化を実現する方法 Oct 24, 2023 pm 12:18 PM

ChatGPTJava: インテリジェントなコード生成と最適化を実装する方法 はじめに: 人工知能テクノロジーの急速な発展に伴い、インテリジェントなコード生成と最適化がプログラミング分野で注目のトピックになっています。 ChatGPT は、自然言語とマシン間の対話を可能にする OpenAI に基づく強力な言語モデルです。この記事では、ChatGPT を使用してインテリジェントなコード生成と最適化操作を実装する方法を紹介し、いくつかの具体的なコード例を示します。 1. インテリジェントなコード生成: ChatGPT を使用してインテリジェントなコード生成を構築する

Java の命名規則に従う必要があるのはなぜですか? Java の命名規則に従う必要があるのはなぜですか? Sep 19, 2023 pm 01:57 PM

Java の命名規則により、プログラムが読みやすくなり、理解しやすくなります。 Java では、クラス名は通常、大文字で始まり、各単語の最初の文字が大文字になったタイトル形式の名詞である必要があります。インターフェイス名は通常、大文字で始まり、各単語の最初の文字が大文字になったタイトル形式の形容詞である必要があります。 Java 命名標準に従う必要がある理由 ソース コードを読んで理解するために必要な労力を軽減します。コード レビューで、構文や命名標準よりも重要な問題に焦点を当てることができます。コード品質レビュー ツールを有効にして、構文やスタイルの設定ではなく、主に重要な問題に焦点を当てます。さまざまなタイプ識別子の命名規則 パッケージ名はすべて小文字にする必要があります。例 packagecom.tutorialspoint;Interface インターフェイス名は大文字である必要があります

Javaデータフォーマット例外(DataFormatException)の解決方法 Javaデータフォーマット例外(DataFormatException)の解決方法 Aug 27, 2023 am 10:14 AM

Javaデータフォーマット例外(DataFormatException)の解決方法 Javaプログラミングでは、さまざまな異常事態に遭遇することがよくあります。その中でも、データ形式の例外 (DataFormatException) はよくある問題ですが、非常に困難な問題でもあります。この例外は、入力データが指定された形式要件を満たさない場合にスローされます。この異常を解決するには、特定のスキルと経験が必要です。この記事では、Java データ形式の例外を解決する方法を詳しく説明し、いくつかのコード例を示します。

ChatGPT Java: インテリジェントな情報抽出と構造化処理を実装する方法 ChatGPT Java: インテリジェントな情報抽出と構造化処理を実装する方法 Oct 28, 2023 am 10:00 AM

ChatGPTJava: インテリジェントな情報抽出と構造化処理を実装する方法、特定のコード例が必要です はじめに: 人工知能技術の急速な発展に伴い、インテリジェントな情報抽出と構造化処理はデータ処理の分野でますます重要な役割を果たしています。この記事では、ChatGPTJava を使用してインテリジェントな情報抽出と構造化処理機能を実装する方法と、具体的なコード例を紹介します。 1. インテリジェントな情報抽出 インテリジェントな情報抽出とは、非構造化データから重要な情報を抽出するプロセスを指します。イン・ジャ

Javaを使用して基数ソートアルゴリズムを実装する方法 Javaを使用して基数ソートアルゴリズムを実装する方法 Sep 19, 2023 pm 03:39 PM

Javaを使用して基数ソートアルゴリズムを実装するにはどうすればよいですか?基数ソート アルゴリズムは、ビット値に基づいて要素をソートする非比較ソート アルゴリズムです。その中心的なアイデアは、並べ替える数値を単位、十、百、その他の桁に従ってグループ化し、各桁を順番に並べ替えて、最終的に順序付けられたシーケンスを取得することです。以下では、Java を使用して基数ソート アルゴリズムを実装する方法とコード例を詳しく紹介します。まず、基数ソ​​ート アルゴリズムでは、ソートする数値を保存するために 2 次元配列を準備する必要があります。配列内の行数はビット数によって決まります。たとえば、

Java では、配列に新しい要素を追加するにはどうすればよいでしょうか? Java では、配列に新しい要素を追加するにはどうすればよいでしょうか? Jan 03, 2024 pm 03:30 PM

配列への新しい要素の追加は Java の一般的な操作であり、さまざまな方法を使用して実行できます。この記事では、配列に要素を追加する一般的な方法をいくつか紹介し、対応するコード例を示します。 1. 新しい配列を使用する一般的な方法は、新しい配列を作成し、元の配列の要素を新しい配列にコピーし、新しい配列の末尾に新しい要素を追加することです。具体的な手順は次のとおりです。 元の配列より 1 大きいサイズの新しい配列を作成します。新しい要素が追加されるためです。元の配列の要素を新しい配列にコピーします。新しい配列の末尾に追加します

Javaスイッチ食料品ショッピングシステムにソーシャル共有機能を実装する方法 Javaスイッチ食料品ショッピングシステムにソーシャル共有機能を実装する方法 Nov 01, 2023 pm 05:15 PM

ソーシャル共有機能を備えた Java スイッチ食料品ショッピング システムの実装方法 テクノロジーの発展とソーシャル メディアの普及により、ますます多くの人が買い物の際に自分の購入経験や考えを共有することに慣れています。ユーザーのニーズを満たすために、優れたショッピング システムは、購入を便利かつ迅速に完了するだけでなく、ソーシャル共有機能も提供する必要があります。この記事では、ソーシャル共有機能を備えた Java switch 食料品ショッピング システムの実装方法を紹介します。まず、実装するソーシャル共有チャネルを決定する必要があります。一般的なチャネルには、WeChat、Weibo、QQ などが含まれます。 Javaでは、3番目のを使用できます

See all articles