intermediate

This commit is contained in:
Fabian Freund
2025-01-23 14:03:55 +01:00
parent bd45ed64ee
commit 78c17a70c5
122 changed files with 8730 additions and 1662 deletions
@@ -3,4 +3,5 @@ abstract interface class IQueryBuilder {
int get ftsMinTokenLength;
String buildFtsQuery(String input);
String buildLikeQuery(String input);
}
@@ -3,6 +3,7 @@ import 'dart:math' as math;
import 'package:collection/collection.dart';
import 'package:lensai/features/search/domain/entities/abstract/i_query_builder.dart';
import 'package:lensai/features/search/domain/entities/bareword.dart';
import 'package:lensai/features/search/domain/unix_tokenizer.dart';
typedef _Phrase = List<Bareword>;
@@ -228,7 +229,26 @@ mixin PrefixQueryBuilderMixin implements IQueryBuilder {
tokenLimit: ftsTokenLimit,
);
return queryBuilder.build();
if (queryBuilder.hasTokens) {
return queryBuilder.build();
}
return '';
}
@override
String buildLikeQuery(String input) {
final likeQueryBuilder = UnixLikeQueryBuilder.tokenize(
input: input,
minTokenLength: 1,
tokenLimit: 5,
);
if (likeQueryBuilder.hasTokens) {
return likeQueryBuilder.build();
}
return '';
}
}
@@ -241,6 +261,25 @@ mixin TrigramQueryBuilderMixin implements IQueryBuilder {
tokenLimit: ftsTokenLimit,
);
return queryBuilder.build();
if (queryBuilder.hasTokens) {
return queryBuilder.build();
}
return '';
}
@override
String buildLikeQuery(String input) {
final likeQueryBuilder = UnixLikeQueryBuilder.tokenize(
input: input,
minTokenLength: 1,
tokenLimit: 5,
);
if (likeQueryBuilder.hasTokens) {
return likeQueryBuilder.build();
}
return '';
}
}