mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-12 12:37:55 +00:00
(improvement)(Headless) Filter out terms whose detect word length is 1 (#1041)
Co-authored-by: jolunoluo
This commit is contained in:
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user