作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Elasticsearch 的新手,遇到以下情况时遇到问题:
我需要类似于 shingles 过滤器的东西,它将根据查询创建以下标记:
["token1 token2", "token2 token3", "token3 token4", "token4 token5"]
并将通过这些标记进行精确匹配,因此标记“token2 token3”和“token4 token5”将匹配文档
提前致谢!
最佳答案
这可以通过使用 shingle filter 来完成并使 output_unigrams false(它将阻止生成单个标记)。像这样创建你的索引
PUT shingle_index
{
"settings": {
"analysis": {
"analyzer": {
"shingle_analyzer": {
"tokenizer": "standard",
"filter": [
"shingle_filter",
"lowercase"
]
}
},
"filter": {
"shingle_filter":{
"type" : "shingle",
"max_shingle_size" : 2,
"min_shingle_size" : 2,
"output_unigrams" : false,
"output_unigrams_if_no_shingles" : true
}
}
}
},
"mappings": {
"mytype":{
"properties": {
"text" : {
"type": "string",
"analyzer": "shingle_analyzer"
}
}
}
}
}
索引一些示例文档。
POST /shingle_index/mytype/_bulk
{"index":{"_id":5}}
{"text":"token1 token4"}
{"index":{"_id":3}}
{"text":"token2 token3"}
{"index":{"_id":2}}
{"text":"token4 token5"}
然后简单的匹配查询会给你想要的结果。
GET shingle_index/_search
{
"query": {
"match": {
"text": "token1 token2 token3 token4"
}
}
}
关于ElasticSearch:带状疱疹 - 如果字段包含确切的带状疱疹标记则匹配短语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40145690/
我是一名优秀的程序员,十分优秀!