solr使用word分詞時高亮結果錯位的解決辦法
阿新 • • 發佈:2019-02-13
使用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包中即可。