我就是这样映射我的索引的。
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分。
但是使用相同的查询,如果我搜索单词"declining",则会得到0的分数。我想检查这个词是否部分存在于文档中。我该怎么做?
发布于 2016-04-28 04:00:43
您需要通过声明特定的分析器来分析内容字段来定义字段映射。在这种情况下,我们可以使用 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"
}
}
}
}https://stackoverflow.com/questions/36904843
复制相似问题