From fe390934ac2da2364e081e06ef1c5385e798d35e Mon Sep 17 00:00:00 2001 From: jmal Date: Mon, 20 May 2024 15:34:26 +0800 Subject: [PATCH 1/2] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E6=A0=87?= =?UTF-8?q?=E7=AD=BE=E9=A1=B5=E9=9D=A2=E6=90=9C=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/jmal/clouddisk/service/impl/LuceneService.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/com/jmal/clouddisk/service/impl/LuceneService.java b/src/main/java/com/jmal/clouddisk/service/impl/LuceneService.java index 10be94a5..aab4bd6e 100644 --- a/src/main/java/com/jmal/clouddisk/service/impl/LuceneService.java +++ b/src/main/java/com/jmal/clouddisk/service/impl/LuceneService.java @@ -506,7 +506,6 @@ private Query getQuery(SearchDTO searchDTO) throws ParseException { continue; } regexpQueryBuilder.add(new BoostQuery(new RegexpQuery(new Term(field, ".*" + keyword + ".*")), boosts.get(field)), BooleanClause.Occur.SHOULD); - // regexpQueryBuilder.add(new BoostQuery(new WildcardQuery(new Term("field", "*" + keyword + "*")), boosts.get(field)), BooleanClause.Occur.SHOULD); } Query regExpQuery = regexpQueryBuilder.build(); BoostQuery boostedRegExpQuery = new BoostQuery(regExpQuery, 10.0f); @@ -558,7 +557,7 @@ private void otherQueryParams(SearchDTO searchDTO, BooleanQuery.Builder builder) if (searchDTO.getTagId() != null) { TagDO tagDO = tagService.getTagInfo(searchDTO.getTagId()); if (tagDO != null) { - builder.add(new TermQuery(new Term("tag", tagDO.getName())), BooleanClause.Occur.MUST); + builder.add(new RegexpQuery(new Term("tag", ".*" + tagDO.getName() + ".*")), BooleanClause.Occur.MUST); } } if (StrUtil.isNotBlank(searchDTO.getCurrentDirectory()) && searchDTO.getCurrentDirectory().length() > 1) { From 46714a4bdcc9024150175f0121a0f3fcad4d6ad3 Mon Sep 17 00:00:00 2001 From: jmal Date: Mon, 20 May 2024 18:34:59 +0800 Subject: [PATCH 2/2] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E6=A0=87?= =?UTF-8?q?=E7=AD=BE=E9=A1=B5=E5=92=8C=E6=94=B6=E8=97=8F=E9=A1=B5=E4=B8=8B?= =?UTF-8?q?=E7=BA=A7=E7=9B=AE=E5=BD=95=E7=9A=84=E6=90=9C=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../clouddisk/service/impl/LuceneService.java | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/jmal/clouddisk/service/impl/LuceneService.java b/src/main/java/com/jmal/clouddisk/service/impl/LuceneService.java index aab4bd6e..5d6d5cfb 100644 --- a/src/main/java/com/jmal/clouddisk/service/impl/LuceneService.java +++ b/src/main/java/com/jmal/clouddisk/service/impl/LuceneService.java @@ -551,24 +551,25 @@ private Query getQuery(SearchDTO searchDTO) throws ParseException { } private void otherQueryParams(SearchDTO searchDTO, BooleanQuery.Builder builder) { - if (StrUtil.isNotBlank(searchDTO.getType())) { + boolean queryPath = StrUtil.isNotBlank(searchDTO.getCurrentDirectory()) && searchDTO.getCurrentDirectory().length() > 1; + if (queryPath) { + Term prefixTerm = new Term("path", searchDTO.getCurrentDirectory()); + PrefixQuery prefixQuery = new PrefixQuery(prefixTerm); + builder.add(prefixQuery, BooleanClause.Occur.MUST); + } + if (!queryPath && StrUtil.isNotBlank(searchDTO.getType())) { builder.add(new TermQuery(new Term("type", searchDTO.getType())), BooleanClause.Occur.MUST); } - if (searchDTO.getTagId() != null) { + if (!queryPath && searchDTO.getTagId() != null) { TagDO tagDO = tagService.getTagInfo(searchDTO.getTagId()); if (tagDO != null) { builder.add(new RegexpQuery(new Term("tag", ".*" + tagDO.getName() + ".*")), BooleanClause.Occur.MUST); } } - if (StrUtil.isNotBlank(searchDTO.getCurrentDirectory()) && searchDTO.getCurrentDirectory().length() > 1) { - Term prefixTerm = new Term("path", searchDTO.getCurrentDirectory()); - PrefixQuery prefixQuery = new PrefixQuery(prefixTerm); - builder.add(prefixQuery, BooleanClause.Occur.MUST); - } - if (searchDTO.getIsFolder() != null) { + if (!queryPath && searchDTO.getIsFolder() != null) { builder.add(IntPoint.newExactQuery("isFolder", searchDTO.getIsFolder() ? 1 : 0), BooleanClause.Occur.MUST); } - if (searchDTO.getIsFavorite() != null) { + if (!queryPath && searchDTO.getIsFavorite() != null) { builder.add(IntPoint.newExactQuery("isFavorite", searchDTO.getIsFavorite() ? 1 : 0), BooleanClause.Occur.MUST); } }