【发布时间】:2019-01-07 19:41:48
【问题描述】:
我们正在使用弹性搜索 5.6.9 为我们的 Django 1.11 服务器上的搜索提供支持。
如果我正在索引数据 example.com 并搜索 example.com 我会得到搜索结果,但如果我正在搜索 example 我不会得到任何搜索结果。
理想情况下,我希望 example 和 example.com 都能工作并返回相同的搜索结果。
我怎样才能得到这种行为?
我认为我将不得不更改相同的分析器和标记器。
使用simple 分析器似乎是正确的做法。
前任:
POST _analyze
{
"analyzer": "simple",
"text": "example.com"
}
返回 example 和 com 作为单独的标记
{
"tokens": [
{
"token": "example",
"start_offset": 0,
"end_offset": 7,
"type": "word",
"position": 0
},
{
"token": "com",
"start_offset": 8,
"end_offset": 11,
"type": "word",
"position": 1
}
]
}
我认为我必须在索引数据和搜索时设置相同的分析器/标记器。
我尝试将analyzer 设置为simple,如下所述:https://www.elastic.co/guide/en/elasticsearch/reference/5.6/analyzer.html
但是,现在我仍然需要搜索 example.com 而不是 example,而且现在我在搜索结果的 highlight 中看不到任何内容。
我很困惑这是如何导致搜索结果而不是highlight。
我完全不在这儿吗?
【问题讨论】:
-
您好,有elastic.co/guide/en/elasticsearch/reference/current/… 的映射吗?可能您不使用“简单”分析器进行索引/搜索。尝试具有特定索引且没有“分析器”参数的分析器 API。 elastic.co/guide/en/elasticsearch/reference/6.5/…
-
@KarstenR。这是我的映射。 ``` { "my_index": { "mappings": { "record": { "date_detection": false, "properties": { "fields": { "properties": { "a0g8dfdrpm": { "type": "文本”,“分析器”:“简单”},“a0of86vs7k”:{“类型”:“文本”,“分析器”:“简单”},“apemix41h6”:{“类型”:“文本”,“分析器” : "simple" }, "b0j9j69qou": { "type": "text", "analyzer": "simple" } ....... }}}}}}} ```我不确定你是什么意味着通过尝试具有特定索引且没有“分析器”参数的分析器 api。
标签: elasticsearch elasticsearch-5 elasticsearch-dsl-py