Azure 认知搜索 - 什么时候会使用不同的搜索和索引分析器?

标签 azure lucene full-text-search azure-cognitive-search lexical-analysis

我试图了解配置不同分析器以在 Azure 搜索中进行搜索和索引的目的是什么。请参阅:https://learn.microsoft.com/en-us/rest/api/searchservice/create-index#-field-definitions-

根据我的理解,索引分析器的工作是将输入文档分解为单独的标记。通过这个过程,它可能会应用多种转换,例如小写内容、删除标点符号和空格,甚至删除整个单词。

如果标记已经处理完毕,那么搜索分析器有什么用?

最初,我认为它会对搜索查询本身应用类似的过程,但是在此阶段设置与用于索引文档的分析器不同的分析器是否会完全破坏搜索结果?如果索引分析器将所有内容都小写,但搜索分析器不会将查询小写,那么这是否意味着您永远不会获得大写字符查询的匹配项?如果搜索分析器不在空格上分割标记怎么办?当查询包含空格时,您不会得到匹配结果吗?

假设这确实是两个分析器一起工作的方式,那么您为什么要设置两个不同的分析器?

最佳答案

您对索引和搜索分析器之间差异的理解是正确的。一个有值(value)的示例场景是使用 ngram 进行索引,但不用于搜索词。因此,这将允许带有“cat”的文档生成“c”、“ca”、“cat”,但您不一定希望在搜索词上应用 ngram,因为这会降低查询的性能,并且没有必要因为文档已经生成了 ngram。希望这是有道理的!

关于Azure 认知搜索 - 什么时候会使用不同的搜索和索引分析器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74409573/

相关文章:

php mysql 全文搜索 : lucene, sphinx,或者?

postgresql - PostgreSQL 中的查询扩展

azure - 检测到程序集更改。重启主机

java - 使用 Hibernate Search 的空间查询始终返回空结果集

sql-server - 错误 SQL71624 : The permission 'CONNECT' is not valid for the target object 'guest' in Microsoft Azure SQL Database v12

java - 这个 Lucene 查询有什么问题?

SQLite:在启用 FTS4 的表中使用比较运算符进行查询

mongodb - 如何与geoNear一起进行文本搜索?

Azure Terraform API 管理 Graphql 支持

sql-server - 如何将代码优先迁移应用到 Azure 中的数据库?