1. 程式人生 > >solr使用word分詞時高亮結果錯位的解決辦法

solr使用word分詞時高亮結果錯位的解決辦法

使用solrj配置好高亮,程式碼如下

        query.setHighlight(true);
//      query.setParam("hl.highlightMultiTerm", true);
        query.setHighlightSimplePre("<font color='red'>"); //標記,高亮關鍵字字首
        query.setHighlightSimplePost("</font>");
        if(FunctionUtil.contains(keys, "title")){
            query.addHighlightField
("title"); } if(FunctionUtil.contains(keys, "abstract")){ query.addHighlightField("abstract"); }

但是最終顯示結果高亮在錯誤的位置,如下圖所示:
這裡寫圖片描述
但是發現一個規律,只要出現符號,就會錯位,一個符號就提前一位,兩個就提前兩位。
查詢配置檔案,發現有這樣兩條:

#是否保留空白字元
keep.whitespace=false
#是否保留標點符號,標點符號的定義見檔案:punctuation.txt
keep.punctuation=false

嘗試將這兩個false改為true後,這個問題就解決了,如下圖:

修改成功以後

補充:上文提到的配置檔案在solr6.6.1版本中位於solr-6.6.1/server/solr-webapp/webapp/WEB-INF/lib/word-1.3.jar檔案中,將jar包中的word.conf檔案解壓出來,按照上述方法修改後重新壓縮排jar包中即可。