elasticsearch ElasticSearch-使用缩写进行搜索
我正在尝试设置一个现有/自定义分析器,以便使用缩写进行搜索。例如,如果文本字段为“美国银行”,则搜索美国银行或美国银行、美国银行等应与此记录匹配 我该怎么做呢?您可能可以将令牌用于自定义分析器 例如,下面的映射
elasticsearch ElasticSearch-使用缩写进行搜索,
elasticsearch,nest,
elasticsearch,Nest,我正在尝试设置一个现有/自定义分析器,以便使用缩写进行搜索。例如,如果文本字段为“美国银行”,则搜索美国银行或美国银行、美国银行等应与此记录匹配 我该怎么做呢?您可能可以将令牌用于自定义分析器 例如,下面的映射 { "settings": { "analysis": { "analyzer": { "my_analyzer": { "tokenizer": "standard", "f
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "standard",
"filter": ["lowercase", "synonym_filter"]
}
},
"filter": {
"synonym_filter": {
"type": "synonym",
"synonyms": [
"bank of america,boa"
],
"expand": true
}
}
}
},
"mappings": {
"document": {
"properties": {
"text": {
"type": "text",
"analyzer": "my_analyzer",
"fielddata": true
}
}
}
}
}
当然,您可以向列表中添加更多内容或使用同义词文件
对于查询用例BOfA或BOA,BOfA-可以使用两种方法
1) 更多的同义词与这些可能的组合
"synonyms": [
"bank of america,boa"
"bank of america,bofa"
]
2) 或者保持摘要完整并使用模糊查询
{
"query": {
"match": {
"text" : {
"query": "bofa",
"fuzziness": 2
}
}
}
}
您将需要synoyms为ES提供摘要。我使用pattern\u replace找出了一些接近的内容:
GET /_analyze
{
"tokenizer": "keyword",
"filter": [
{
"type": "pattern_replace",
"pattern": "(\\B.)",
"replacement": ""
},
{
"type": "pattern_replace",
"pattern": "(\\s)",
"replacement": ""
},
"uppercase",
{
"type": "ngram",
"min_gram": 3,
"max_gram": 5
}
],
"text": "foxes jump lazy dogs"
}
产生:
{
"tokens": [
{
"token": "FJL",
"start_offset": 0,
"end_offset": 20,
"type": "word",
"position": 0
},
{
"token": "FJLD",
"start_offset": 0,
"end_offset": 20,
"type": "word",
"position": 0
},
{
"token": "JLD",
"start_offset": 0,
"end_offset": 20,
"type": "word",
"position": 0
}
]
}
user3775217的答案在回答您的问题时应进行检查。