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
オブジェクトに解析する必要があります。 。次に、IndexSearcher
の search
メソッドを使用して検索を実行し、検索結果のランキングを返します。
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 を作成します。
以上がJava で全文取得と検索を実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

WebStorm Mac版
便利なJavaScript開発ツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

メモ帳++7.3.1
使いやすく無料のコードエディター
