• [source,js]
  • }

    [[slop]]
    === Mixing It Up

    Requiring exact-phrase matches (((“proximity matching”, “slop parameter”)))may be too strict a constraint. Perhaps we do
    want documents that contain quick brown fox'' to be considered a match for the queryquick fox,’’ even though the positions aren’t exactly equivalent.

    We can introduce a degree (((“slop parameter”)))of flexibility into phrase matching by using the
    slop parameter:

    [source,js]

    GET /my_index/my_type/_search
    {
    “query”: {
    “match_phrase”: {
    “title”: {
    “query”: “quick fox”,
    “slop”: 1
    }
    }
    }

    }

    // SENSE: 120_Proximity_Matching/10_Slop.json

    The slop parameter tells the match_phrase query how(((“matchphrase query”, “slop parameter”))) far apart terms are
    allowed to be while still considering the document a match. By _how far
    apart
    we mean how many times do you need to move a term in order to make
    the query and document match
    ?

    We’ll start with a simple example. To make the query quick fox match
    a document containing quick brown fox we need a slop of just 1:

    1. Pos 1 Pos 2 Pos 3
    2. -----------------------------------------------
    3. Doc: quick brown fox
    4. -----------------------------------------------
    5. Query: quick fox
    6. Slop 1: quick fox

    Although all words need to be present in phrase matching, even when using slop,
    the words don’t necessarily need to be in the same sequence in order to
    match. With a high enough slop value, words can be arranged in any order.

    To make the query fox quick match our document, we need a slop of 3:

    1. Pos 1 Pos 2 Pos 3
    2. -----------------------------------------------
    3. Doc: quick brown fox
    4. -----------------------------------------------
    5. Query: fox quick
    6. Slop 1: fox|quick <1>
    7. Slop 2: quick fox
    8. Slop 3: quick fox

    <1> Note that fox and quick occupy the same position in this step.
    Switching word order from fox quick to quick fox thus requires two
    steps, or a slop of 2.