Spring data elastic search wild card search

Viewed 4013

I am trying to search for the word blue in the below list of text

"BlueSaphire","Bluo","alue","blue", "BLUE", "Blue","Blue Black","Bluo","Saphire Blue", "black" , "green","bloo" , "Saphireblue"

SearchQuery searchQuery = new NativeSearchQueryBuilder().withIndices("color")
                  .withQuery(matchQuery("colorDescriptionCode", "blue")
                  .fuzziness(Fuzziness.ONE)
                  )
                  .build();

This works fine and the search result returns the below records along with the scores

alue    2.8718023
Bluo    1.7804208
Bluo    1.7804208
BLUE    1.2270637
blue    1.2270637
Blue    1.2270637
Blue Black    1.1082436
Saphire Blue    0.7669148

But I am not able to make wild card work . "SaphireBlue" and "BlueSaphire" is also expected to be part of the result

I tried the below setting but it does not work .

SearchQuery searchQuery = new NativeSearchQueryBuilder().withIndices("color")
                      .withQuery(matchQuery("colorDescriptionCode", "(.*?)blue")
                      .fuzziness(Fuzziness.ONE)
                      )
                      .build();

In stack overflow , I observed a solution to specify analyze wild card .

QueryBuilder queryBuilder = boolQuery().should(
                queryString("blue").analyzeWildcard(true)
                        .field("colorDescriptionCode", 2.0f);

I dont find the queryString static method . I am using spring-data-elasticsearch 2.0.0.RELEASE .

Let me know how i can specify the wild card so the all words containing blue will also be returned in the search results

2 Answers
Related