(improvement)(Headless) Filter out terms whose detect word length is 1 (#1041)

Co-authored-by: jolunoluo
This commit is contained in:
LXW
2024-05-28 21:37:19 +08:00
committed by GitHub
parent c42f3477a4
commit bd9cc8f88a
3 changed files with 21 additions and 2 deletions

View File

@@ -14,7 +14,7 @@ public class QueryMapReq {
private String queryText;
private List<String> dataSetNames;
private User user;
private Integer topN = 10;
private Integer topN = 0;
private MapModeEnum mapModeEnum = MapModeEnum.STRICT;
private QueryDataType queryDataType = QueryDataType.ALL;
}

View File

@@ -46,6 +46,7 @@ public abstract class BaseMapper implements SchemaMapper {
private void filter(QueryContext queryContext) {
filterByDataSetId(queryContext);
filterTermByDetectWordLen(queryContext);
switch (queryContext.getQueryDataType()) {
case TAG:
filterByQueryDataType(queryContext, element -> !(element.getIsTag() > 0));
@@ -79,6 +80,22 @@ public abstract class BaseMapper implements SchemaMapper {
}
}
private static void filterTermByDetectWordLen(QueryContext queryContext) {
Map<Long, List<SchemaElementMatch>> dataSetElementMatches =
queryContext.getMapInfo().getDataSetElementMatches();
for (Map.Entry<Long, List<SchemaElementMatch>> entry : dataSetElementMatches.entrySet()) {
List<SchemaElementMatch> value = entry.getValue();
if (!CollectionUtils.isEmpty(value)) {
value.removeIf(schemaElementMatch -> {
if (!SchemaElementType.TERM.equals(schemaElementMatch.getElement().getType())) {
return false;
}
return StringUtils.length(schemaElementMatch.getDetectWord()) <= 1;
});
}
}
}
private static void filterByQueryDataType(QueryContext queryContext, Predicate<SchemaElement> needRemovePredicate) {
queryContext.getMapInfo().getDataSetElementMatches().values().stream().forEach(
schemaElementMatches -> schemaElementMatches.removeIf(

View File

@@ -119,7 +119,9 @@ public class MetaDiscoveryServiceImpl implements MetaDiscoveryService {
SchemaMapInfo mapInfo,
Map<Long, DataSetResp> dataSetMap) {
Map<Long, List<SchemaElementMatch>> result = new HashMap<>();
if (0 == topN) {
return result;
}
SemanticSchema semanticSchema = semanticService.getSemanticSchema();
for (Map.Entry<Long, List<SchemaElementMatch>> entry : mapInfo.getDataSetElementMatches().entrySet()) {
Long dataSetId = entry.getKey();