Solrのを使用したデータ操作のためのコード

I.はじめに

操作のSolrのモード3があります。

1、、Solrj操作を使用するJavaSEプログラム開発のために

2、春・データのSolrを使用すると、動作プログラム開発SSMのために

図3は、springbootプラグspringboot-スタータデータのSolrを使用して動作するspringbootプログラム開発のため

第二に、Solrjを使用してコードを開発

1、Mavenのの導入をサポート

<依存性> 
    <のgroupId> org.apache.solr </のgroupId> 
    <たartifactId> Solrの-solrj </たartifactId> 
    <バージョン> 8.2.0 </バージョン> 
</依存>

Solr CRUDコードの製造のための2、。例としては、次のとおりです:

輸入org.apache.solr.client.solrj.SolrQuery。
輸入org.apache.solr.client.solrj.SolrServerException。
輸入org.apache.solr.client.solrj.impl.HttpSolrClient。
輸入org.apache.solr.client.solrj.response.QueryResponse。
輸入org.apache.solr.common.SolrDocument。
輸入org.apache.solr.common.SolrDocumentList;
輸入org.apache.solr.common.SolrInputDocument。

インポートにjava.io.IOException; 

/ ** 
 * 2019年9月6日にデビッドによって作成されます。
 * / 
パブリック クラスTestSolr { 

    プライベート 静的な 最終文字列solrUrl = "のhttp:// localhostを:8983 / Solrの/記事"; 

    // 情報&変更情報追加
    公共 ボイド)(addSolrをスローSolrServerException、IOExceptionが{ 
        HttpSolrClient solrClient = 新しい新しいHttpSolrClient.Builder(solrUrl)
                .withConnectionTimeout( 10000 
                .withSocketTimeout( 60000 
                .build(); 
        SolrInputDocument文献 = 新しい新しいSolrInputDocument() ;
         // 注:IDフィールドはあまりできませんでし 
        document.addField( "ID"、 "10" ); 
        document.addField( "タイトル"、 "Javaベースのオブジェクト指向プログラミング" )。
        solrClient.add(文献); 
        solrClient.commit(); 
    } 

    // 情報削除
    公共 ボイド(delSolr)はスローにIOException、SolrServerException { 
        HttpSolrClient solrClient = 新しい新しいHttpSolrClient.Builder(solrUrl)
                .withConnectionTimeout( 10000 
                .withSocketTimeout( 60000 
                .buildを(); 
        solrClient.deleteById( "10"); // 削除 
        solrClient.commitを(); // 提出
    } 

    // クエリ情報
    公共 のボイドsearchSolr()はスローにIOException、SolrServerException { 
        HttpSolrClient solrClient = 新しい新しいHttpSolrClient.Builder(solrUrl)
                .withConnectionTimeout( 10000 
                .withSocketTimeout( 60000 
                ; .build()
        SolrQueryクエリ = 新しい新しいSolrQueryを(); 
        query.set( "Q"、 "名前:プログラミング" );
         // コールqueryメソッドサーバー、クエリインデックスデータベース 
        QueryResponseレスポンス= solrClient.query(クエリ);
         // クエリ結果 
        SolrDocumentList結果= response.getResults();
         // 結果のクエリ総数
        長い CNT = results.getNumFound()。
        System.out.println( "查询结果总数:" + CNT)。
        (SolrDocument solrDocument:結果){ 
            System.out.printlnは(solrDocument.get( "ID" ))。
            System.out.println(solrDocument.get( "タイトル" )); 
        } 
    } 
}

三、使用spring-data-solr开发代码

1、春・データ・Solrの操作コードの導入Mavenのサポート異なるバージョンは、最新バージョン4.0を物品に一致していません。

注意:対応するバージョン5.1.9のための春バージョン4.0を、なるように同じバージョンのspringMVC、それ以外の場合はエラーを報告します。

<依存性> 
    <のgroupId> org.springframework.data </のgroupId> 
    <たartifactId>ばねデータのSolr </たartifactId> 
    <バージョン> 4.0.10.RELEASE </バージョン> 
</依存>

 

インデックスフィールド@ @Id主キー識別子は、Solrのエントリ識別子に充填される2、準備のPOJO、。春先-データsolrsや注釈で使用solrjです:@Field

@SolrDocument(solrCoreName = "記事" パブリック クラスの記事は、実装Serializableを{ 
    @Id 
    @Indexed 
    プライベート int型のIDを、
    @Indexed 
    プライベート文字列のタイトル。
    プライベート文字列の内容。
    @Indexed 
    プライベート日付CREATEDATE。
}

 

3、春のプロファイルバネ-solr.xmlの準備、ノートはhttpへの参照のみアドレス:// localhostを:8983 / Solrに、プロジェクトには複数のコレクションが必要な場合がありますので。

<?xml version = "1.0"エンコード= "UTF-8"?> 
<豆のxmlns = "http://www.springframework.org/schema/beans" 
       のxmlns:XSI = "http://www.w3.org / 2001 / XMLスキーマ・インスタンス」
       のxsi:schemaLocationの = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> 
    <! - Solrの服务器地址- > 
    の<beanのid = "solrClientFactory" クラス = "org.springframework.data.solr.server.support.HttpSolrClientFactoryBean"> 
        <プロパティ名= "URL"の値=」のhttp:// localhostを:8983 / Solrの "/> 
        <プロパティ名="タイムアウト」値= "5000" />
        <プロパティ名= "MaxConnectionsを"値= "100" /> 
    </豆> 
    <! - Solrの模板- > 
    <ビーンID = "solrTemplate"クラス = "org.springframework.data.solr.core.SolrTemplate"> 
        <コンストラクタ、引数インデックス= "0" REF = "solrClientFactory" /> 
    </ビーン> 
</豆>

 

4、コントローラコード、注意が操作コレクションを指定する必要がある場合。

輸入org.apache.solr.client.solrj.response.UpdateResponse。
輸入org.lanqiao.entity.Articles。
輸入org.springframework.beans.factory.annotation.Autowired;
輸入org.springframework.data.domain.Sort。
輸入org.springframework.data.solr.core.SolrTemplate。
輸入org.springframework.data.solr.core.query.Criteria。
輸入org.springframework.data.solr.core.query.Query。
輸入org.springframework.data.solr.core.query.SimpleQuery。
輸入org.springframework.data.solr.core.query.result.ScoredPage。
輸入org.springframework.stereotype.Controller。
インポートorg.springframework.web.bind.annotation.RequestMapping;
輸入org.springframework.web.bind.annotation.ResponseBody。

輸入java.util.Date;
輸入はjava.util.List;
輸入java.util.Optional; 


/ ** 
 * 2019年9月7日にデビッドによって作成されます。
 * / 
@Controller 
パブリック クラスArticlesController { 
    @Autowired 
    プライベートSolrTemplate solrTemplate。

    @RequestMapping( "/保存" 
    @ResponseBody 
    公共の文字列のkeywordsSearchSpring(){ 
        記事記事 = 新しい記事(); 
        articles.setId( 11); 
        articles.setTitle( "山东济南商城" ); 
        articles.setCreateDate(新しい日付()); 
        solrTemplate.saveBean(「記事」記事)。
        solrTemplate.commit( "記事" )。
        戻る「成功はセーブ!」; 
    } 

    @RequestMapping( "/取得" 
    @ResponseBody 
    公衆記事selectById(){ 
        オプション <論文>オプション= solrTemplate.getById( "物品"、1記事。クラス)。
        戻る optional.get(); // オプションjdk1。
    } 

    @RequestMapping( "/デル" 
    @ResponseBody 
    公共 INT delById(){ 
        UpdateResponse updateResponse = solrTemplate.deleteByIds( "記事"、 "11" )。
        返す updateResponse.getStatusを(); // 0表示成功
    } 

    @RequestMapping( "/選択" 
    @ResponseBody 
    公共一覧<論説> を選択し(){
         // 查询所有 
        クエリのクエリ= 新しいSimpleQuery(); 
        
        // 设置条件 
        基準基準= 基準( "タイトル")。です(」 
        query.addCriteria(基準); 
        
        // 設定ページ 
        query.setOffset(0L); // インデックス(デフォルト0)開始 
        query.setRows(2);   // 各レコードのページ番号(デフォルト10)

        // 照合を設定し、 
        ソートソート= 新しい新しいソート(Sort.Direction.ASC、 "CREATEDATE" ); 
        query.addSort(ソート); 
        
        // クエリ 
        ScoredPage <論説>ページを= solrTemplate.queryForPage( " 記事"クエリ、記事。クラス); 
        System.out.printlnは( " pages.getTotalElements()=「+ pages.getTotalElements()); 
        リスト <論説>コンテンツ= pages.getContent();
         戻りコンテンツ; 
    }
    
}

 

知識を詳細に説明されていない、次のように、ここでプログラムリストのSpringMVCの一部です:

 

三、springbootのプラグイン開発

springbootプラグインのデフォルトでは使用することですsolrjSolrClientオブジェクトの実装Solrの操作を。:ブログを参照してくださいhttps://www.jianshu.com/p/05a161add1a6を

個人的に私が思うに、ばねデータのSolrSolrTemplateは、開発のためのより適切なので、ここでの焦点は、デフォルトsolrj春・データのSolrを変更する方法について話しています。  

1、Mavenのの導入をサポート

<依存性> 
    <のgroupId> org.springframework.boot </のgroupId> 
    <たartifactId>ばねブートスタータデータSolrの</たartifactId> 
</依存>

 

すなわち、支持Solrjの導入はまた、ばねデータのSolr Solrのサポートされている操作を実施することが分かります。

図2は、ルートへのパスのみを配置ばねデータのSolrを使用して、コンフィギュレーションファイルをapplication.properties。

#Solrの配置
spring.data.solr.host =のhttp:// localhostを:8983 / Solrの

 

 

3、設定ファイルの作成、パッケージはSolrjはのSolrClinet SolrTemplate春・データ・Solrのです。

import org.apache.solr.client.solrj.SolrClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.solr.core.SolrTemplate;

@Configuration
public class MySolrConfig {
    @Autowired
    SolrClient solrClient;

    @Bean
    public SolrTemplate getSolrTemplate() {
        return new SolrTemplate(solrClient);
    }

}

 

这样就可以使用SolrTemplate对象来操作Solr了,controller中的操作方法和entity中的对象都不用改变,同上面的代码。

程序清单:

 

POJO代码:

controller代码:

 

 

参考文章:

https://blog.csdn.net/likemebee/article/details/78469002

https://www.jianshu.com/p/05a161add1a6

https://blog.csdn.net/zhuzg2005/article/details/89598925

 

 

おすすめ

転載: www.cnblogs.com/david1216/p/11482228.html