首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >弹性搜索中句子的部分词搜索

问弹性搜索中句子的部分词搜索
EN

Stack Overflow用户
提问于 2017-02-08 09:28:20
回答 1查看 1.1K关注 0票数 0

我对弹性搜索非常陌生,我想根据句子中的部分单词搜索结果,就像搜索字符串是

“瓦尔”

它应该使用字符串值搜索结果。

“价值大于100”

但是如果我使用的是一个查询

代码语言:javascript
复制
var searchDescriptor = new SearchDescriptor<ElasticsearchProject>()
searchDescriptor.Query(q =>
                    q.Wildcard(m => m.OnField(p => p.PNumber).Value(string.Format("*{0}*", searchString)))

                );

它只对一个字串起作用,如

"ValueIsGraterThan100“

如果我用这样的东西

代码语言:javascript
复制
var searchDescriptor = new SearchDescriptor<ElasticsearchProject>()
searchDescriptor.Query(q =>

                    q.QueryString(m => m.OnFields(p => p.PName).Query(searchString))

                );

这将适用于整个单词,就像我必须提供搜索字符串,如

“价值”

搜索

“价值大于100”

只有提供val才不会work.So如何满足我的需求?

EN

回答 1

Stack Overflow用户

发布于 2017-02-08 10:28:43

您目前的字段是not_analyzed,您可以使用由边缘ngram过滤器组成的边n-g分析器来标记字段,然后再将字段保存在倒排索引上。您可以使用以下设置

代码语言:javascript
复制
PUT index_name1323
{
    "settings": {
        "analysis": {
            "analyzer": {
                "autocomplete_analyzer": {
                    "type": "custom",
                    "tokenizer": "standard",
                    "filter": [
                        "standard",
                        "lowercase",
                        "filter_edgengram"
                    ]
                }
            },
            "filter": {
                "filter_edgengram": {
                    "type": "edgeNGram",
                    "min_gram": 2,
                    "max_gram": 15
                }
            }
        }
    },
    "mappings": {
        "test_type": {
            "properties": {
                "props": {
                    "type": "string",
                    "analyzer": "autocomplete_analyzer"
                }
            }
        }
    }
}

现在,您可以简单地使用query_string或术语筛选器将两个文档与val匹配。

代码语言:javascript
复制
POST index_name1323/_search
{
    "query": {
        "query_string": {
            "default_field": "props",
            "query": "val"
        }
    }
}

希望这能有所帮助

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42109245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档