ホームページ  >  記事  >  Java  >  Java API開発における全文検索にSolrを使用する

Java API開発における全文検索にSolrを使用する

WBOY
WBOYオリジナル
2023-06-18 10:41:191366ブラウズ

インターネットの発達と情報の爆発的な増加に伴い、Web ページ、文献、日常生活などから得られる情報は膨大な量に達しており、効率的な方法が必要です。処理して管理します。全文検索は、キーワードやフレーズを通じて必要な情報を見つけて抽出するための非常に効率的で一般的に使用される方法であり、Solr は全文検索の開発に非常に適したツールです。

この記事では、Solr の基本概念と、Java API 開発における全文検索に Solr を使用する方法を紹介します。

1. Solr の概要

Solr は本質的にオープン ソースのエンタープライズ検索プラットフォームであり、Apache Lucene Java ライブラリに基づいており、いくつかの便利な REST API を提供します。 Solr の公式紹介によると、主に次の機能が含まれています。

  • 全文検索
  • リアルタイム検索
  • ウェブサイト検索
  • 分散検索
  • データベース統合
  • 複数のファイル形式の解析
  • 複数のファイル形式のエクスポート
  • 外部構成

As a エンタープライズレベルの検索プラットフォームである Solr は、非常に完全な検索機能と柔軟な構成方法を提供するため、実際の開発で検索モジュールの開発が容易になります。以下では、Java API 開発における全文検索に Solr を使用する方法に焦点を当てます。

2. 全文検索に Solr を使用する

2.1 Solr のインストール

まず、Solr をローカル環境またはサーバーにインストールする必要があります。 Solr は、Solr をインストールして実行するための非常に便利な方法を公式に提供しています:

  • Solr のダウンロード アドレス: https://lucene.apache.org/solr/downloads.html。
  • ファイルを解凍します: tar -zxvf solr-x.x.x.zip。
  • 解凍されたフォルダー「cd solr-x.x.x」を入力します。
  • Solr の開始: bin/solr start。

2.2 Solr コアの作成とスキーマの定義

Solr コアは Solr の中核となる概念であり、データ インデックスや検索リクエストの処理を含む独立した検索環境に相当します。 Solr では、複数のコアを作成でき、各コアは独立した構成とデータ セットを持つことができます。

Solr では、最初にコアを作成し、次に検索用のスキーマを定義する必要があります。スキーマはデータ フィールド、タイプ、インデックス、その他の属性を定義し、検索の効率と精度に影響します。

Solr 独自のスキーマまたはユーザー定義のスキーマを使用して、検索に必要なフィールド属性を定義できます。ここでは、Solr のデフォルト スキーマの使用方法を紹介します。

Solr 独自のデフォルト スキーマを使用する:

  1. コアを作成する:

    bin/solr create_core -c <core name>
  2. 作成されたフィールドをすべてクリアする:

    curl http://localhost:8983/solr/<core name>/schema -H 'Content-type:application/json' -d '{"delete-all-fields":{}}'
  3. フィールドの追加:

    curl http://localhost:8983/solr/<core name>/schema -H 'Content-type:application/json' -d '
     {
       "add-field":{
          "name":"field_name",
          "type":"string",
          "stored":true
        }
     }'
  4. Solr サービスの再起動

ユーザー定義のスキーマの使用:

ユーザーはスキーマをカスタマイズして、さまざまなアプリケーションのニーズに対応し、Solr はスキーマ API を提供します。作成者が簡単にスキーマを追加できるようにします。

  1. コアの作成:

    bin/solr create_core -c <core name>
  2. フィールドの追加:

    • フィールド タイプの追加:
      フィールドを追加Solr サーバー content_type を application/json に設定して POST リクエストを送信します。
    {   
         "add-field-type": {   
           "name":"test_fieldType","class":"solr.TextField","indexAnalyzer":{   
              "tokenizer":{   
                 "class":"solr.StandardTokenizerFactory"   
              },"filters":[  
              {   
                  "class":"solr.StopFilterFactory",   
                  "ignoreCase":true,   
                  "words":"stopword.txt",   
                  "format":"snowball",   
                  "enablePositionIncrements":true   
              },{   
                  "class":"solr.SnowballPorterFilterFactory",   
                  "language":"English"   
              }   
             ],   
             "queryAnalyzer":{   
                 "tokenizer":{   
                    "class":"solr.StandardTokenizerFactory"   
                  },"filters":[  
                  {   
                     "class":"solr.StopFilterFactory",   
                     "ignoreCase":true,   
                     "words":"stopword.txt",   
                     "format":"snowball",   
                     "enablePositionIncrements":true   
                  },{   
                     "class":"solr.SnowballPorterFilterFactory",   
                     "language":"English"   
                   }   
                 ]   
              }   
           }   
    }
    • フィールド (タイトル) を追加:
    {
         "add-field": {
             "name": "title",
             "type": "text_en",
             "stored": true
         }
    }

    フィールドの後に応答が返されます。正常に追加されました。

  3. Solr config でこのスキーマを指定します:

    ${core}/conf ディレクトリに入って solrconfig.xml を変更し、次のコードを追加します:

    <schemaFactory class="ClassicIndexSchemaFactory"/>
    <schema name="schema_name" version="1.5">
        <field name="title" type="text_en" indexed="true" stored="true" />
    </schema>

2. Java API で Solr を使用して全文検索を行う

次に、Solr の Java API を使用して Java Web アプリケーションで全文検索を行う方法を紹介します。

  1. SolrJ 依存関係の追加

Maven プロジェクトでは、SolrJ 依存関係を追加する必要があります。Solr は非常に便利な依存関係を公式に提供しています:

<dependency>
    <groupId>org.apache.solr</groupId>
    <artifactId>solr-solrj</artifactId>
    <version>8.2.0</version>
</dependency>
  1. SolrJ を使用してコード内を検索する

Java コードでは、SolrJ が提供する QueryResponse と SolrClient を使用して検索操作を実行できます。クエリされたデータは、キーと値のペアとして表示できます。

まず、SolrClient のインスタンスを作成する必要があります。 SolrJ では、SolrClient は Solr のクライアントであり、Solr REST API を直接呼び出すメソッドを提供します。

String solrUrl = "http://localhost:8983/solr/core_name";
SolrClient solr = new HttpSolrClient.Builder(solrUrl).build();

次に、SolrQuery オブジェクトを作成する必要があります。これは、検索キーワード、並べ替えルール、フィルター条件などの検索パラメーターを設定するために使用されます。

SolrQuery query = new SolrQuery();
query.setQuery("keyword");
query.setStart(0);
query.setRows(10);
query.setSort("sort_field", SolrQuery.ORDER.asc);
query.addFilterQuery("filter_field:filter_value");

最後に、solr.query(query) メソッドを通じて検索を実行できます。返される QueryResponse には、検索結果と関連するメタデータ情報が含まれています。 response.getResults() メソッドを通じて検索結果リストを取得する必要があります。

QueryResponse response = solr.query(query);
SolrDocumentList results = response.getResults();

実際の開発では、必要に応じて検索結果をJSON形式やJavaオブジェクトに変換するなどの二次処理を行うこともできます。

for (SolrDocument result : results) {
    String id = (String) result.getFieldValue("id");
    String title = (String) result.getFieldValue("title");
    String content = (String) result.getFieldValue("content");
    
    // 将搜索结果转换为 Java 实体类
    SearchResult item = new SearchResult(id, title, content);
    
    // 或将搜索结果转换为 JSON 字符串
    String json = new ObjectMapper().writeValueAsString(result);
}

上記は、Java API 開発における全文検索に Solr を使用する基本的なプロセスです。 Solr は非常に完全な検索機能と Java API サポートを提供するため、効率的で正確な検索モジュールを簡単に開発して、ユーザーに優れた検索エクスペリエンスを提供できます。

以上がJava API開発における全文検索にSolrを使用するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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