Skip to content

Commit

Permalink
Fixed fetch count bug. Fixed advanced search filter bug where filter …
Browse files Browse the repository at this point in the history
…did not work.
  • Loading branch information
ivanmrsulja committed Oct 10, 2024
1 parent 3691ee4 commit 0cbec00
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public ESCounter(String baseUrl) {

public int count() throws SearchEngineException {
try {
String url = baseUrl + "/_doc/_count";
String url = baseUrl + "/_count";
HttpClient httpClient;
if (baseUrl.startsWith("https")) {
httpClient = ESHttpsBasicClientFactory.getHttpClient();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ public static String fillInMissingOperators(String query) {
String currentToken = tokens[i];

if (!priorities.containsKey(currentToken) && !currentToken.contains(":") && !currentToken.equals(")")) {
currentToken = "ALLTEXT:" + currentToken;
currentToken = "ALLTEXT:" + currentToken + " OR nameLowercaseSingleValued:" + currentToken;
}

if (i > 0 && currentToken.contains(":") && !priorities.containsKey(tokens[i - 1])) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,31 +52,32 @@ public QueryConverter(SearchQuery query) {

private Map<String, Object> filteredOrNot() {
ExpressionTransformer transformer = new ExpressionTransformer();
if (query.getFilters().isEmpty()) {
String queryForParsing = ExpressionTransformer.fillInMissingOperators(
ExpressionTransformer.removeWhitespacesFromRangeExpression(
query.getQuery()
.replace("(", "( ")
.replace(")", " )")
));
List<String> queryTokens = new ArrayList<>(Arrays.asList(queryForParsing.split(" ")));
queryTokens.removeIf(String::isEmpty);
String es8Query = BoolQuery.of(q -> {
q.must(transformer.parseAdvancedQuery(queryTokens));
return q;
})._toQuery().toString();
ObjectMapper objectMapper = new ObjectMapper();
try {
Map<String, Object> queryMap =
objectMapper.readValue(es8Query.replaceFirst("Query: ", ""), new TypeReference<Map<String, Object>>() {
});
return queryMap;
} catch (JsonProcessingException e) {
log.error("Query parsing for ES8 failed, falling back to old parsing method.");
return new QueryStringMap(query.getQuery()).map;
}
} else {
return buildFilterStructure();
StringBuilder queryForParsing = new StringBuilder("( " + ExpressionTransformer.fillInMissingOperators(
ExpressionTransformer.removeWhitespacesFromRangeExpression(
query.getQuery()
.replace("(", "( ")
.replace(")", " )")
)) + " )");

for (String filter : query.getFilters()) {
queryForParsing.append(" AND ").append(filter);
}

List<String> queryTokens = new ArrayList<>(Arrays.asList(queryForParsing.toString().split(" ")));
queryTokens.removeIf(String::isEmpty);
String es8Query = BoolQuery.of(q -> {
q.must(transformer.parseAdvancedQuery(queryTokens));
return q;
})._toQuery().toString();
ObjectMapper objectMapper = new ObjectMapper();
try {
Map<String, Object> queryMap =
objectMapper.readValue(es8Query.replaceFirst("Query: ", ""), new TypeReference<Map<String, Object>>() {
});
return queryMap;
} catch (JsonProcessingException e) {
log.error("Query parsing for ES8 failed, falling back to old parsing method.");
return new QueryStringMap(query.getQuery()).map;
}
}

Expand Down

0 comments on commit 0cbec00

Please sign in to comment.