Analyzer and search_analyzer for common tokens


(Christian Jost) #1

Hello guys,

I've an issue with a match query on a text field that contains a product title.

Product titles:

  • A: Spezial-Träger
  • B: Träger

If someone searches for Spezial-Träger only A should match since it's the most precise match you can get, because it's exactly the product the customer is searching for.

But if you enter Träger it should match the base product Träger as well as the more precise one Spezial-Träger.

I tried to define an index_analyzer which generates all possible token variations of the indexed product:
A: spezialtrager, spezial, trager
B: trager

Then I tried to define a search_analyzer which only generates the most precise token possible:
A: spezialtrager
B: trager

ES _analyze:
Index: "Spezial-Träger":
{
"tokens": [
{
"token": "spezialtrager",
"start_offset": 0,
"end_offset": 14,
"type": "word",
"position": 0
},
{
"token": "spezial",
"start_offset": 0,
"end_offset": 7,
"type": "word",
"position": 0
},
{
"token": "trager",
"start_offset": 8,
"end_offset": 14,
"type": "word",
"position": 1
}
]
}

Search: "Spezial-Träger":
{
"tokens": [
{
"token": "spezialtrager",
"start_offset": 0,
"end_offset": 14,
"type": "word",
"position": 0
}
]
}

As I follow the ES documentation:

  • Tokens are evaluated in an specific order, different analyzers have to generate the same order of common tokens

But I don't get any match. I am lost :smiley:

Thanks a lot for any help.

Kind regards,
Christian


(system) #2

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.