我在理解弹性搜索分析器时遇到一些问题。它是做什么用的以及如何使用?
从这篇文章中,有来自源文本的标记生成器和令牌过滤器。我是否无法从URL或索引内部的文本中了解源文本?在文章中,它说要执行“ GET
哪个来自URL,但是此分析器与搜索索引中的文本有关吗?
如果我的问题听起来很愚蠢,我会感到很困惑和抱歉。
分析器是包装三个功能的包装器:
简而言之,分析器用于告诉Elasticsearch如何对文本进行索引和搜索。
您正在寻找的是Analyze 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”,如果您不使用分析器,则此将被存储为“嗨,我在海边”。如果要查询此文档,则必须编写完整的短语(在intro =“嗨,我在sid”中查找文档)。但是,如果将此短语索引为标记,那么即使您查询标记(在intro =“ sid”中查找文档),您也会得到该文档。
注意:默认情况下,标准分析器用于所有文本字段。
希望能帮助到你 !
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句