这是我映射索引的方式。
settings = new ConnectionSettings(pool)
.DefaultIndex(defaultIndex)
.MapDefaultTypeNames(m => m.Add(typeof(MyClass), "content"))
.PrettyJson()
.DisableDirectStreaming());
假设我有一个使用
索引到ES的文档内容:"蒂姆库克在财报电话会议上透露iPhone的销售情况 尽管该公司是第一家公司,但印度每年增长56% 全球销售额在13年内下滑。"
现在,如果用户使用匹配查询搜索单词
{
"query": {
"match": {
"answer": {
"query": "decline"
}
}
}}
说我的得分为0.047。
但是使用相同的查询,如果我搜索单词 "拒绝" ,我会得到0分。我想检查一下这个词是否部分存在于文件中。我怎么能这样做?
答案 0 :(得分:1)
您需要通过声明特定分析器来分析您的内容字段来定义字段映射。在这种情况下,我们可以使用english
language analyzer根据英语语法和词汇规则来阻止令牌。
PUT your_index
{
"mappings": {
"your_type": {
"properties": {
"content": {
"type": "string",
"analyzer": "english"
}
}
}
}
}
然后您可以索引您的内容
PUT /your_index/your_type/1
{
"content": "Tim Cook revealed during the earnings call that iPhone sales in India grew by 56% on a yearly basis, despite the company's first global sales decline in 13 years."
}
最后,您可以同时搜索decline
和declining
并获得相同的分数
POST /your_index/_search
{
"query": {
"match": {
"content": {
"query": "decline"
}
}
}
}
POST /your_index/_search
{
"query": {
"match": {
"content": {
"query": "declining"
}
}
}
}