From bef21af6dd7b7724b74bd6ffc83d6dc20acf62fe Mon Sep 17 00:00:00 2001 From: yanhaizhe Date: Tue, 27 May 2025 16:12:52 +0800 Subject: [PATCH] =?UTF-8?q?feat(highlight):=20=E6=B7=BB=E5=8A=A0=E9=AB=98?= =?UTF-8?q?=E4=BA=AE=E5=8F=82=E6=95=B0=20noMatchSize=20=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 HighLight 注解中添加 noMatchSize 属性,用于设置没有匹配高亮片段时返回的文本长度 - 在 HighLightParam 类中添加相应的 noMatchSize 字段- 在 EntityInfoHelper 和 WrapperProcessor 类中添加对 noMatchSize 参数的支持 - 在 AnnotationConstants 中定义 DEFAULT_MATCH_SIZE 常量作为默认值 --- .../java/org/dromara/easyes/annotation/HighLight.java | 8 ++++++++ .../easyes/annotation/rely/AnnotationConstants.java | 4 ++++ .../java/org/dromara/easyes/core/biz/HighLightParam.java | 4 ++++ .../org/dromara/easyes/core/kernel/WrapperProcessor.java | 1 + .../org/dromara/easyes/core/toolkit/EntityInfoHelper.java | 1 + 5 files changed, 18 insertions(+) diff --git a/easy-es-annotation/src/main/java/org/dromara/easyes/annotation/HighLight.java b/easy-es-annotation/src/main/java/org/dromara/easyes/annotation/HighLight.java index 95305457..10471419 100644 --- a/easy-es-annotation/src/main/java/org/dromara/easyes/annotation/HighLight.java +++ b/easy-es-annotation/src/main/java/org/dromara/easyes/annotation/HighLight.java @@ -33,6 +33,14 @@ public @interface HighLight { */ int fragmentSize() default DEFAULT_FRAGMENT_SIZE; + /** + * 如果没有匹配的高亮片段,从字段开头返回的文本长度.默认与100 + * 0,表示不返回任何内容 + * + * @return 固定大小的文本 + */ + int noMatchSize() default DEFAULT_MATCH_SIZE; + /** * 搜索返回的高亮片段数量,默认全部返回 * diff --git a/easy-es-annotation/src/main/java/org/dromara/easyes/annotation/rely/AnnotationConstants.java b/easy-es-annotation/src/main/java/org/dromara/easyes/annotation/rely/AnnotationConstants.java index 91e1d4aa..4d332560 100644 --- a/easy-es-annotation/src/main/java/org/dromara/easyes/annotation/rely/AnnotationConstants.java +++ b/easy-es-annotation/src/main/java/org/dromara/easyes/annotation/rely/AnnotationConstants.java @@ -18,6 +18,10 @@ public interface AnnotationConstants { * 高亮截取默认长度 */ int DEFAULT_FRAGMENT_SIZE = 100; + /** + * 如果没有匹配的高亮片段,从字段开头返回的文本长度.默认与100 + */ + int DEFAULT_MATCH_SIZE = 100; /** * 默认分片数 */ diff --git a/easy-es-core/src/main/java/org/dromara/easyes/core/biz/HighLightParam.java b/easy-es-core/src/main/java/org/dromara/easyes/core/biz/HighLightParam.java index c3ff2491..66e0cf45 100644 --- a/easy-es-core/src/main/java/org/dromara/easyes/core/biz/HighLightParam.java +++ b/easy-es-core/src/main/java/org/dromara/easyes/core/biz/HighLightParam.java @@ -16,6 +16,10 @@ public class HighLightParam { * 高亮字段截取长度,默认为100 */ private Integer fragmentSize; + /** + * 如果没有匹配的高亮片段,从字段开头返回的文本长度.默认与100 + */ + private Integer noMatchSize; /** * 搜索返回的高亮片段数量 默认全部返回 */ diff --git a/easy-es-core/src/main/java/org/dromara/easyes/core/kernel/WrapperProcessor.java b/easy-es-core/src/main/java/org/dromara/easyes/core/kernel/WrapperProcessor.java index 5f7a306d..f24c0277 100644 --- a/easy-es-core/src/main/java/org/dromara/easyes/core/kernel/WrapperProcessor.java +++ b/easy-es-core/src/main/java/org/dromara/easyes/core/kernel/WrapperProcessor.java @@ -597,6 +597,7 @@ public class WrapperProcessor { ); highlightBuilder.fields(highlightField, field); highlightBuilder.fragmentSize(highLightParam.getFragmentSize()); + highlightBuilder.noMatchSize(highLightParam.getNoMatchSize()); Optional.ofNullable(highLightParam.getNumberOfFragments()).ifPresent(highlightBuilder::numberOfFragments); } }); diff --git a/easy-es-core/src/main/java/org/dromara/easyes/core/toolkit/EntityInfoHelper.java b/easy-es-core/src/main/java/org/dromara/easyes/core/toolkit/EntityInfoHelper.java index ba723910..549ed569 100644 --- a/easy-es-core/src/main/java/org/dromara/easyes/core/toolkit/EntityInfoHelper.java +++ b/easy-es-core/src/main/java/org/dromara/easyes/core/toolkit/EntityInfoHelper.java @@ -409,6 +409,7 @@ public class EntityInfoHelper { // 置入高亮查询参数缓存 HighLightParam highlightParam = new HighLightParam(); highlightParam.setFragmentSize(highLight.fragmentSize()) + .setNoMatchSize(highLight.noMatchSize()) .setPreTag(highLight.preTag()) .setPostTag(highLight.postTag()) .setHighLightField(realHighLightField)