我是弹性搜索的新手,我所做的就是索引一些文档。然后在检索术语向量时,我注意到有很多术语被截断,这是一个小例子
"nationallypublic": {
"term_freq": 1,
"tokens": [
{
"position": 496,
"start_offset": 3126,
"end_offset": 3146
}
]
},
"natur": {
"term_freq": 1,
"tokens": [
{
"position": 60,
"start_offset": 373,
"end_offset": 380
}
]
},
这些是该文档的一些摘录,这一部分自然包含
是80年代的一些电影制作人自然而然地说罗伯特弗里德曼 全球广告和宣传高级副总裁 华纳兄弟
和另一个国家公共(我知道这是错误的词,但即便如此,它应该被包括在内)应该是国家公布的
据报道,他们在被停止几个小时后于6月21日失踪 在全国公布后,费城小姐附近超速驾驶 搜索他们的尸体是在8月4日在农场外发现的 镇
我想知道我做错了什么?这是我的设置和映射
{
"ap1": {
"mappings": {
"document": {
"properties": {
"docno": {
"type": "string",
"index": "not_analyzed",
"store": true
},
"text": {
"type": "string",
"store": true,
"term_vector": "with_positions_offsets_payloads",
"analyzer": "my_english"
}
}
}
},
"settings": {
"index": {
"creation_date": "1422144472984",
"uuid": "QzT_sx4aRWOXGlEs2ATibw",
"analysis": {
"analyzer": {
"my_english": {
"type": "english",
"stopwords": "_none_"
}
}
},
"store": {
"type": "default"
},
"number_of_replicas": "0",
"number_of_shards": "1",
"version": {
"created": "1040299"
}
}
}
}
}
答案 0 :(得分:3)
这是词干的效果。 默认情况下,雪球限制器也用作分析仪。 词干分析器的预期行为是将单词转换为其基本形式,如下所示 -
Jumping => jump
Running = > run
等等。 snowball stemmer适用于将单词转换为基本形式的算法。这意味着转换可能不是非常准确,因为它会将令牌转换为可能代表基本形式但不完全是基本形式的单词。 因此,索引和搜索时会有效地发生以下版本
jumping => jmp
jump => jmp
jumped => jmp
因此我们能够成功完成干预,但有些情况并不准确。
您看到的令牌转换不是截断,而是通过雪球算法进行转换以进行词干分析。
如果你想要准确的令牌,最好使用基于字典的hunspell,这样会减慢搜索速度。