Apache Luceneの紹介

1概要

Ap​​ache Lucene は、さまざまなプログラミング言語から使用できる全文検索エンジンです。

この記事では、ライブラリの中心的な概念を理解し、簡単なアプリケーションを作成します。

2 Mavenのセットアップ

まず始めに、必要な依存関係を追加しましょう。

<dependency>
    <groupId>org.apache.lucene</groupId>
    <artifactId>lucene-core</artifactId>
    <version>7.1.0</version>
</dependency>

最新版はhttps://search.maven.org/classic/#search%7Cgav%7C1%7Cg%3A%22org.apache.lucene%22%20AND%20a%3A%22lucene-core%22[here]。

また、検索クエリを解析するには、次のものが必要です。

<dependency>
    <groupId>org.apache.lucene</groupId>
    <artifactId>lucene-queryparser</artifactId>
    <version>7.1.0</version>
</dependency>

here 最新バージョンを確認してください。 。

3コアコンセプト

3.1. 索引付け

簡単に言うと、Luceneはページのキーワードへのマッピングではなく、データの「逆索引付け」を使用します。** 本の最後の用語集のように、キーワードをページにマッピングします。

テキストを直接検索するのではなく、インデックスを検索するので、検索応答が速くなります。

3.2. 書類

ここで、文書はフィールドの集まりであり、各フィールドはそれに関連付けられた値を持ちます。

インデックスは通常1つ以上のドキュメントで構成され、検索結果は最も一致するドキュメントのセットです。

これは常にプレーンテキストのドキュメントではなく、データベーステーブルやコレクションにすることもできます。

3.3. フィールド

ドキュメントはフィールドデータを持つことができます。フィールドは通常、データ値を保持するキーです。

title: Goodness of Tea
body: Discussing goodness of drinking herbal tea...

ここで title body はフィールドであり、一緒に検索することも個別に検索することもできます。

3.4. 分析

分析は、検索を容易にするために、与えられたテキストをより小さく正確な単位に変換します。

テキストは、キーワードの抽出、一般的な単語や句読点の削除、単語の小文字への変換など、さまざまな操作を経ます。

この目的のために、複数の内蔵アナライザがあります。

  1. StandardAnalyzer - 基本的な文法に基づいて分析し、ストップを解除します

「a」、「an」などの単語。小文字でも変換されます。 。 SimpleAnalyzer - 英字以外の文字に基づいてテキストを分割し、

小文字に変換 。 WhiteSpaceAnalyzer - 空白に基づいてテキストを分割します

アナライザーを使用してカスタマイズするためのアナライザーは他にもあります。

3.5. 検索中

インデックスが作成されたら、 Query と__IndexSearcherを使用してそのインデックスを検索できます。

IndexWritter がインデックスの作成を担当し、 IndexSearcher がインデックスの検索を担当します。

3.6. クエリ構文

Luceneは非常に動的で簡単に作成できるクエリ構文を提供します。

フリーテキストを検索するには、クエリとしてテキスト String を使用します。

特定の分野のテキストを検索するには、次のようにします。

fieldName:text

eg: title:tea

範囲検索:

timestamp:[1509909322,1572981321]----

ワイルドカードを使って検索することもできます。

[source,text,gutter:,true]

dri?nk

ワイルドカード「?」の代わりに単一の文字を検索します。

[source,text,gutter:,true]
前の投稿:Java Web Weekly、第165号
次の投稿:Hibernate名前付きクエリ