In elasticsearch, esiste un modo per impostare un analizzatore che generi intervalli di posizione tra i token quando vengono rilevati interruzioni di riga o segni di punteggiatura?interruzioni di riga o segni di punteggiatura come interruzioni di posizione in elasticsearch
Diciamo indice I di un oggetto con la seguente stringa senza senso (con interruzione di linea) come uno dei suoi campi:
The quick brown fox runs after the rabbit.
Then comes the jumpy frog.
L'analizzatore norma produrrà i seguenti token di rispettive posizioni:
0 the
1 quick
2 brown
3 fox
4 runs
5 after
6 the
7 rabbit
8 then
9 comes
10 the
11 jumpy
12 frog
Ciò significa che una query match_phrase
di the rabbit then comes
corrisponderà a questo documento come hit. C'è un modo per introdurre uno spazio tra rabbit
e then
in modo che non corrisponda a meno che non sia stato introdotto un slop
?
Ovviamente, una soluzione alternativa potrebbe essere quella di trasformare la stringa singola in una matrice (una riga per voce) e utilizzare position_offset_gap
nella mappatura dei campi, ma preferirei mantenere una singola stringa con newline (e una soluzione definitiva implicherebbe spazi vuoti di posizione più grandi per le righe nuove rispetto, ad esempio, ai segni di punteggiatura).