Mere relevante søgeresutater i Elasticsearch

For at give brugeren de mest relevante søge resultater i Elasticsearch er der mulighed for at lave det der hedder en bool søgning. Det går ud på at den laver forskellige søgninger og prioritere resultatet derefter.

Den kan deles op i 3 dele:

  • must : skal være i resultatet
  • could : kan være i resultatet
  • should : skulle være i resultatet

Det er ikke nødvendigt at benytte alle 3 på en gang.

Eksempel:

curl -XGET 'localhost:9200/_search?pretty' -d '{
        "query": {
                "bool": {
                        "must": {
                                "match": {
                                        "name" : "stavefelj"
                                }
                        },
                        "should": {
                                "match": {
                                        "name": {
                                                "query": "stavefelj",
                                                "fuzziness": 2,
                                                "prefix_length": 1
                                        }
                                }
                        }
                }
        }
}'

Her laver jeg en bool med 2 forksllige querys. Hvor den ene forsøger at finde ordet stavefelj (lig mærke til slåfejlen) og i næste benytter jeg en Fuzzy search.
Det er ikke noget krav at den ikke finder noget i en af søgningerne. Hvis den finder noget i must vil dette blot have en større score og dermed være det mest relevante resultat.

Leave a comment

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *

This site uses Akismet to reduce spam. Learn how your comment data is processed.