Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ------ REQUETE MATCH EXACT ----------------------
- SearchRequestBuilder sqb =
- elasticSearchService.getClient().prepareSearch("labels-fr")
- .setTypes("advText")
- .setSearchType(SearchType.SCAN)
- .setScroll(new TimeValue(60000))
- .setSize(100)
- .setExplain(false)
- .setTrackScores(true)
- .addHighlightedField("text", 5000)
- .setHighlighterPreTags("<hi>")
- .setHighlighterPostTags("</hi>")
- QueryBuilder allTerms = matchQuery("text", query.originalText)
- .operator(org.elasticsearch.index.query.MatchQueryBuilder.Operator.AND)
- .fuzziness(Fuzziness.ZERO)
- .minimumShouldMatch("100%")
- ;
- // Obtention des termes de la requêtes en utilisant la méthode tokenStream de l’analyseur concerné
- …
- …
- // Passage des termes à ma fonction qui vérifie que le nombre de terme query & document est le même
- sqb.setQuery(
- functionScoreQuery(allTerms)
- .add(ScoreFunctionBuilders.scriptFunction("ep_score_all_terms", "native", params))
- .boostMode(CombineFunction.REPLACE)
- );
- // Exécution de la recherche
- scrollResp = sqb.execute().actionGet();
- // Stockage du résultat des hits
- …
- // ------ REQUETE MATCH PARTIEL ----------------------
- sqb = elasticSearchService.getClient().prepareSearch("labels-fr")
- .setTypes("advText")
- .setSearchType(SearchType.SCAN)
- .setScroll(new TimeValue(60000))
- .setSize(100)
- .setExplain(false)
- .setTrackScores(true)
- .addHighlightedField("text", 5000)
- .addHighlightedField("text.syn",5000)
- .setHighlighterPreTags("<hi>")
- .setHighlighterPostTags("</hi>");
- allTerms = matchQuery("text.syn", query.originalText)
- .operator(org.elasticsearch.index.query.MatchQueryBuilder.Operator.AND)
- .fuzziness(Fuzziness.ONE)
- .minimumShouldMatch("100%");
- sqb.setQuery(allTerms);
- scrollResp = sqb.execute().actionGet();
- // Stockage du résultat des hits
- …
- // ------- REQUETE FUZZY ------------------------------------
- sqb = elasticSearchService.getClient().prepareSearch("labels-fr")
- .setTypes("advText")
- .setSearchType(SearchType.SCAN)
- .setScroll(new TimeValue(60000))
- .setSize(100)
- .setExplain(false)
- .setTrackScores(true)
- .addHighlightedField("text", 5000)
- .addHighlightedField("text.phonetic", 5000)
- .setHighlighterPreTags("<hi>")
- .setHighlighterPostTags("</hi>");
- allTerms = matchQuery("text.phonetic", query.originalText) .operator(org.elasticsearch.index.query.MatchQueryBuilder.Operator.AND)
- .fuzziness(Fuzziness.ONE)
- .minimumShouldMatch("100%");
- sqb.setQuery(allTerms);
- scrollResp = sqb.execute().actionGet();
- // Stockage du résultat des hits
- ...
- // ------- REQUETE RELATED ------------------------------------
- sqb = elasticSearchService.getClient().prepareSearch("labels-fr")
- .setTypes("advText")
- .setSearchType(SearchType.SCAN)
- .setScroll(new TimeValue(60000))
- .setSize(100)
- .setExplain(false)
- .setTrackScores(true)
- .addHighlightedField("text", 5000)
- .setHighlighterPreTags("<hi>")
- .setHighlighterPostTags("</hi>");
- allTerms = matchQuery("text", query.originalText)
- .operator(org.elasticsearch.index.query.MatchQueryBuilder.Operator.OR)
- .minimumShouldMatch("50%");
- sqb.setQuery(allTerms);
- scrollResp = sqb.execute().actionGet();
- // Stockage du résultat des hits
- …
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement