From 3f948d0d3650bfae0cd0087ae5a1236527bbd7c1 Mon Sep 17 00:00:00 2001 From: ZJWave <594980947@qq.com> Date: Thu, 21 Feb 2019 16:48:48 +0800 Subject: [PATCH] =?UTF-8?q?Bug=20fix=20,=E6=9F=A5=E8=AF=A2=E5=85=B3?= =?UTF-8?q?=E9=94=AE=E5=AD=97=E4=BD=BF=E7=94=A8=E4=B8=80=E4=B8=8B=20QueryP?= =?UTF-8?q?arser.escape(keyword),=E4=BE=8B=E5=A6=82=EF=BC=9Akeyword=3DI/O,?= =?UTF-8?q?=E5=90=A6=E5=88=99buildQuery=E6=97=B6=E4=BC=9A=E5=87=BA?= =?UTF-8?q?=E7=8E=B0=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/article/searcher/LuceneSearcher.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/module-article/module-article-search-lucene/src/main/java/io/jpress/module/article/searcher/LuceneSearcher.java b/module-article/module-article-search-lucene/src/main/java/io/jpress/module/article/searcher/LuceneSearcher.java index 19552352b..06e85ea62 100644 --- a/module-article/module-article-search-lucene/src/main/java/io/jpress/module/article/searcher/LuceneSearcher.java +++ b/module-article/module-article-search-lucene/src/main/java/io/jpress/module/article/searcher/LuceneSearcher.java @@ -19,7 +19,6 @@ import com.jfinal.kit.PathKit; import com.jfinal.log.Log; import com.jfinal.plugin.activerecord.Page; import io.jpress.commons.utils.CommonsUtils; -import io.jpress.commons.utils.JsoupUtils; import io.jpress.module.article.model.Article; import io.jpress.module.article.service.search.ArticleSearcher; import org.apache.lucene.analysis.Analyzer; @@ -99,6 +98,8 @@ public class LuceneSearcher implements ArticleSearcher { public Page
search(String keyword, int pageNum, int pageSize) { IndexReader indexReader = null; try { + //Bug fix ,查询关键字使用一下 QueryParser.escape(keyword),例如:keyword=I/O,否则buildQuery时会出现异常 + keyword = QueryParser.escape(keyword); indexReader = DirectoryReader.open(directory); IndexSearcher indexSearcher = new IndexSearcher(indexReader); Query query = buildQuery(keyword); @@ -106,11 +107,11 @@ public class LuceneSearcher implements ArticleSearcher { ScoreDoc lastScoreDoc = getLastScoreDoc(pageNum, pageSize, query, indexSearcher); TopDocs topDocs = indexSearcher.searchAfter(lastScoreDoc, query, pageSize); - SimpleHTMLFormatter formatter = new SimpleHTMLFormatter("", ""); - Highlighter highlighter=new Highlighter(formatter, new QueryScorer(query)); + SimpleHTMLFormatter formatter = new SimpleHTMLFormatter("", ""); + Highlighter highlighter = new Highlighter(formatter, new QueryScorer(query)); highlighter.setTextFragmenter(new SimpleFragmenter(100)); - List
articles = toArticleList(indexSearcher, topDocs,highlighter,keyword); + List
articles = toArticleList(indexSearcher, topDocs, highlighter, keyword); int totalRow = getTotalRow(indexSearcher, query); return newPage(pageNum, pageSize, totalRow, articles); } catch (IOException e) { @@ -124,7 +125,7 @@ public class LuceneSearcher implements ArticleSearcher { private static ScoreDoc getLastScoreDoc(int pageIndex, int pageSize, Query query, IndexSearcher indexSearcher) throws IOException { - if (pageIndex == 1){ + if (pageIndex == 1) { return null; // 如果是第一页返回空 } int num = pageSize * (pageIndex - 1); // 获取上一页的数量 @@ -199,7 +200,7 @@ public class LuceneSearcher implements ArticleSearcher { } - private List
toArticleList(IndexSearcher searcher, TopDocs topDocs,Highlighter highlighter,String keyword) throws IOException { + private List
toArticleList(IndexSearcher searcher, TopDocs topDocs, Highlighter highlighter, String keyword) throws IOException { List
articles = new ArrayList<>(); Analyzer analyzer = new JcsegAnalyzer(JcsegTaskConfig.COMPLEX_MODE); for (ScoreDoc item : topDocs.scoreDocs) { @@ -218,7 +219,7 @@ public class LuceneSearcher implements ArticleSearcher { String highlightContent = highlighter.getBestFragment(analyzer.tokenStream(keyword, new StringReader(text)), text); article.setHighlightContent(highlightContent); } catch (InvalidTokenOffsetsException e) { - logger.error(e.getMessage(),e); + logger.error(e.getMessage(), e); } articles.add(article); } -- Gitee