模糊包含带有 elasticSearch 的查询
Fuzzy contains query with elasticSearch
如何执行模糊查询并包含字符串?
假设我有以下文件:
{
...
"name":"william shakespeare"
...
}
我想收到以下查询的文档:
- "William"(将 return 所有威廉姆斯)
- "Willeam"(与 1 相同)
- "William Shake"(将 return 仅包含 "William Shake"
的文档
- "Wiliam sake"(与 3 相同)
- "william shakespeare" / "William Shakespeare" / "William shakespeer" (将 return 只有威廉·莎士比亚
我尝试使用 ngram 分析器和模糊查询但没有成功。
{
"settings": {
"analysis": {
"filter": {
"ngram_analyzer_filter": {
"type": "ngram",
"min_gram": 2,
"max_gram": 15
}
},
"analyzer": {
"ngram_analyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"lowercase",
"ngram_analyzer_filter"
]
}
}
}
},
"mappings": {
"my_type": {
"properties": {
"name": {
"type": "string",
"analyzer": "ngram_analyzer",
"search_analyzer": "standard",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}
}
我的查询:
{
"query": {
"multi_match": {
"query": "william shake",
"fields": [
"name.raw"
],
"fuzziness": 2,
"minimum_should_match":2
}
}
}
- 它multi_match因为我搜索了不止一个字段
- 试图使用分析字段或 not_analyzed 字段。
- 尝试使用 "type":"phrase"
- 弹性版本 2.3.1
试试下面的查询。
{
'query': {
'multi_match': {
'fields': [
"name.raw"
],
'query': $scope.search.queryTerm,
'fuzziness': 2,
'prefix_length': 1
}
}
}
如何执行模糊查询并包含字符串? 假设我有以下文件:
{
...
"name":"william shakespeare"
...
}
我想收到以下查询的文档:
- "William"(将 return 所有威廉姆斯)
- "Willeam"(与 1 相同)
- "William Shake"(将 return 仅包含 "William Shake" 的文档
- "Wiliam sake"(与 3 相同)
- "william shakespeare" / "William Shakespeare" / "William shakespeer" (将 return 只有威廉·莎士比亚
我尝试使用 ngram 分析器和模糊查询但没有成功。
{
"settings": {
"analysis": {
"filter": {
"ngram_analyzer_filter": {
"type": "ngram",
"min_gram": 2,
"max_gram": 15
}
},
"analyzer": {
"ngram_analyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"lowercase",
"ngram_analyzer_filter"
]
}
}
}
},
"mappings": {
"my_type": {
"properties": {
"name": {
"type": "string",
"analyzer": "ngram_analyzer",
"search_analyzer": "standard",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}
}
我的查询:
{
"query": {
"multi_match": {
"query": "william shake",
"fields": [
"name.raw"
],
"fuzziness": 2,
"minimum_should_match":2
}
}
}
- 它multi_match因为我搜索了不止一个字段
- 试图使用分析字段或 not_analyzed 字段。
- 尝试使用 "type":"phrase"
- 弹性版本 2.3.1
试试下面的查询。
{
'query': {
'multi_match': {
'fields': [
"name.raw"
],
'query': $scope.search.queryTerm,
'fuzziness': 2,
'prefix_length': 1
}
}
}