我有一些问题,了解弹性搜索分析器。它的用途是什么?如何使用它?
在这篇文章中,有一个来自源文本的标记器和令牌过滤器。我是否无法理解源文本是来自URL还是来自索引中的文本?从文章中,它说要执行"GET“。
analyze?text=I%20sing%20he%20sings%20they%20are%20singing&analyzer=snowball“
哪个来自URL,但是这个分析器是否与搜索我的索引中的文本有关?
如果我的问题听起来很蠢,我会感到很困惑和抱歉。
发布于 2018-08-12 15:01:34
分析器是一个包装器,包装了三个函数:
简而言之,分析器用于告诉elasticsearch如何对文本进行索引和搜索。
您正在研究的是分析API,它是一个非常好的工具,可以理解分析器的工作原理。文本提供给此API,而与索引.无关。
在您的例子中,GET请求
GET http://localhost:9200/_analyze?text=I%20sing%20he%20sings%20they%20are%20singing&analyzer=snowball相当于:
GET _analyze
{
"analyzer" : "snowball",
"text" : "I sing he sings they are singing"
}其中产出:
{
"tokens": [
{"token": "i", "position": 1, ...},
{"token": "sing", "position": 2, ...},
{"token": "he", "position": 3, ...},
{"token": "sing", "position": 4, ...},
{"token": "sing", "position": 7, ...},
]
}正如文章中提到的那样。
还有一件事,假设您在索引中定义了一个自定义分析器,它以您自己的方式执行字符过滤、标记化和令牌过滤的组合,并且您希望检查它将如何标记文本,那么您可以使用_analyze端点作为索引名,即使在这种情况下,您也必须提供文本。
GET my_index/_analyze
{
"analyzer" : "custom",
"text" : "I sing he sings they are singing" --> You have to provide the text.
}为什么是分析器?
分析器通常用于索引文本或短语时,将文本分解为单词是很有用的,这样您就可以搜索条件以获得文档。
示例:假设您有一个索引(my_index),在该索引中,您有一个文本字段(intro),并在其中索引一个文档,其中“intro”:“嗨,我是sid",如果您不使用分析器,那么它将被存储为”嗨,我是sid“。如果您想查询这个文档,您必须编写完整的短语(查找intro = "Hi I I sid“的文档)。但是,如果这个短语被索引为令牌,那么即使您查询一个令牌(查找intro=“sid”中的文档),您也会得到文档。
注意:默认情况下,对所有文本字段都使用标准分析器。
希望能帮上忙!
发布于 2022-03-27 16:02:51
分析器:,一个分析器,由1、字符过滤器、 2、过滤器和3组成。分析器基本上是这些构建块的包,每个模块都会更改输入流。因此,当索引文档时,它会通过以下流程:

https://stackoverflow.com/questions/51807333
复制相似问题