SpringBoot集成Solr

Solr介紹

Solr是一個(gè)高性能崩哩,采用Java5開發(fā)巡球,基于Lucene的全文搜索服務(wù)器。同時(shí)對(duì)其進(jìn)行了擴(kuò)展琢锋,提供了比Lucene更為豐富的查詢語(yǔ)言辕漂,同時(shí)實(shí)現(xiàn)了可配置、可擴(kuò)展并對(duì)查詢性能進(jìn)行了優(yōu)化吴超,并且提供了一個(gè)完善的功能管理界面钉嘹,是一款非常優(yōu)秀的全文搜索引擎。

SpringBoot集成Solr

  • 添加springboot集成solr的依賴
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-solr</artifactId>
        </dependency>
  • application.yml指向solr地址
spring:
  data:
    solr:
      host: http://192.168.0.197:8983/solr/ik_core
  • 添加solr實(shí)時(shí)更新操作
@SpringBootApplication
@EnableScheduling
public class SpringbootSolrApplication {

    private Logger logger = LoggerFactory.getLogger(this.getClass());

    @Autowired
    private RestTemplateBuilder builder;

    @Autowired
    private RestTemplate restTemplate;

    // 使用RestTemplateBuilder來實(shí)例化RestTemplate對(duì)象鲸阻,spring默認(rèn)已經(jīng)注入了RestTemplateBuilder實(shí)例
    @Bean
    public RestTemplate restTemplate() {
        return builder.build();
    }

    public static void main(String[] args) {
        SpringApplication.run(SpringbootSolrApplication.class, args);
    }

    //每五秒執(zhí)行一次
    @Scheduled(cron = "0/5 * * * * *")
    public void updateSolr() {
        MultiValueMap<String, Object> postParameters = new LinkedMultiValueMap<>();
        postParameters.add("command", "full-import");
        postParameters.add("verbose", "false");
        postParameters.add("clean", "true");
        postParameters.add("commit", "true");
        postParameters.add("core", "ik_core");
        postParameters.add("name", "dataimport");
        HttpHeaders headers = new HttpHeaders();
        headers.add("Content-Type", "application/x-www-form-urlencoded");
        HttpEntity <MultiValueMap <String, Object>> r = new HttpEntity<>(postParameters, headers);
        String time = String.valueOf(new Date().getTime());
        String url = "http://192.168.0.197:8983/solr/ik_core/dataimport?_=" + time + "&indent=on&wt=json";
        String responseMessage = restTemplate.postForObject(url, r, String.class);

        logger.info("更新solr索引:返回值:{}", responseMessage);
    }
}

  • 測(cè)試查詢(增加了高亮顯示)
@Test
    public void test() throws IOException, SolrServerException {

        SolrQuery solrQuery = new SolrQuery();
        solrQuery.set("q", "title:*");
        solrQuery.set("start", 0);
        solrQuery.set("rows", 20);

        //======高亮設(shè)置===
        //開啟高亮
        solrQuery.setHighlight(true);
        //高亮域
        solrQuery.addHighlightField("title");
        //前綴
        solrQuery.setHighlightSimplePre("<span style='color:red'>");
        //后綴
        solrQuery.setHighlightSimplePost("</span>");

        QueryResponse response = solrClient.query(solrQuery);
        SolrDocumentList results = response.getResults();

        System.out.println("查詢內(nèi)容:" + solrQuery);
        System.out.println("文檔數(shù)量:" + results.getNumFound());
        System.out.println("查詢花費(fèi)時(shí)間:" + response.getQTime());

        //獲取高亮信息
        Map<String, Map<String, List<String>>> highlighting = response.getHighlighting();

        for (SolrDocument solrDocument :results) {
            System.out.println(solrDocument);
            System.out.println(solrDocument.getFieldValue("cover"));
            System.out.println(solrDocument.getFieldValue("service_area"));

            //輸出高亮
            Map<String, List<String>> map = highlighting.get(solrDocument.get("id"));
            List<String> list = map.get("title");
            if(list != null && list.size() > 0){
                System.out.println(list.get(0));
            }
        }

    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末跋涣,一起剝皮案震驚了整個(gè)濱河市缨睡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌陈辱,老刑警劉巖奖年,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異沛贪,居然都是意外死亡陋守,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門利赋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來水评,“玉大人,你說我怎么就攤上這事媚送≈性铮” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵塘偎,是天一觀的道長(zhǎng)疗涉。 經(jīng)常有香客問我,道長(zhǎng)吟秩,這世上最難降的妖魔是什么咱扣? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮涵防,結(jié)果婚禮上偏窝,老公的妹妹穿的比我還像新娘。我一直安慰自己武学,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布伦意。 她就那樣靜靜地躺著火窒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪驮肉。 梳的紋絲不亂的頭發(fā)上熏矿,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音离钝,去河邊找鬼票编。 笑死,一個(gè)胖子當(dāng)著我的面吹牛卵渴,可吹牛的內(nèi)容都是我干的慧域。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼浪读,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼昔榴!你這毒婦竟也來了辛藻?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤互订,失蹤者是張志新(化名)和其女友劉穎吱肌,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體仰禽,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡氮墨,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了吐葵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片规揪。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖折联,靈堂內(nèi)的尸體忽然破棺而出粒褒,到底是詐尸還是另有隱情,我是刑警寧澤诚镰,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布奕坟,位于F島的核電站,受9級(jí)特大地震影響清笨,放射性物質(zhì)發(fā)生泄漏月杉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一抠艾、第九天 我趴在偏房一處隱蔽的房頂上張望苛萎。 院中可真熱鬧,春花似錦检号、人聲如沸腌歉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)翘盖。三九已至,卻和暖如春凹蜂,著一層夾襖步出監(jiān)牢的瞬間馍驯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工玛痊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留汰瘫,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓擂煞,卻偏偏與公主長(zhǎng)得像混弥,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子颈娜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容