发布: 2026/09/06 14:46 阅读: 0
原文作者:vlogommentary
原文来源:https://www.youtube.com/embed/LxCCWuwkcpw
了解如何配置 Elasticsearch 分词器和分析器,将驼峰命名法或 PascalCase 单词拆分为单独的标记,以改进搜索匹配。 --- 该视频基于用户“dominikweber”提出的问题 https://stackoverflow.com/q/79457368/ (https://stackoverflow.com/u/2849119/) 以及用户“Paulo”提供的答案 https://stackoverflow.com/a/79457666/ (https://stackoverflow.com/u/4534923/) “堆栈溢出”网站。感谢这些伟大的用户和 Stackexchange 社区的贡献。请访问这些链接以获取原始内容和更多详细信息,例如替代解决方案、主题的最新更新/开发、评论、修订历史记录等。例如,问题的原始标题是:将大写分成两个单词的分词器此外,根据 CC BY-SA 许可的内容(音乐除外)https://meta.stackexchange.com/help/licensing 原始问题帖子根据“CC BY-SA 4.0”获得许可( https://creativecommons.org/licenses/by-sa/4.0/ )许可证,原始答案帖子已根据“CC BY-SA 4.0”( https://creativecommons.org/licenses/by-sa/4.0/ )许可证获得许可。如果您觉得有任何不对劲,请随时在该视频下给我留言。 --- 简介 当在 Elasticsearch 中索引和搜索像 LoremIpsum 这样的文本时,您可能希望将这个驼峰式或 PascalCase 单词拆分为多个标记:lorem、ipsum,并保留原始的 loremipsum 标记以进行更广泛的匹配。这通过匹配部分单词或整个组合单词来提高搜索灵活性。问题 默认情况下,Elasticsearch 不会根据单个标记的大小写变化进行拆分。因此,如果文本仅作为一个标记 loremipsum 进行索引,则搜索 Lorem 或 Ipsum 可能不会产生预期的匹配项。解决方案概述 我们可以使用具有以下功能的自定义分析器来解决此问题: 关键字分词器(最初将整个输入视为单个标记) 配置为在大小写更改时分割的 word_delimiter 标记过滤器 用于大小写规范化的小写过滤器 关键是将 word_delimiter 过滤器与以下内容一起使用: split_on_case_change: truepreserve_original: true(以保留完整标记)generate_word_parts: true 此设置会生成所有预期的标记。配置分析器和过滤器示例: [[观看视频以显示此文本或代码片段]] 测试分析器:您可以使用 _analyze API 测试此分析器: [[观看视频以显示此文本或代码片段]] 输出标记将为: loremipsum(原始完整标记) lorem(根据大小写更改拆分) ipsum(根据大小写更改拆分) 映射字段 要使用此分析器,请在文本字段的索引映射中指定它: [[观看视频以了解此文本或代码片段]] 在搜索中使用分析器 默认情况下,查询使用映射中定义的分析器。但是,您可以在搜索期间显式指定分析器:[[观看视频以显示此文本或代码片段]] 当您的搜索查询需要特定的标记化行为时,请使用此方法。摘要 使用带有 word_delimiter 过滤器的关键字分词器来拆分驼峰命名法。为所需的标记设置preserve_original: true 和 split_on_case_change: true。使用映射中的此自定义分析器定义文本字段。可以选择在搜索时指定分析器以保证查询一致性。此设置解决了 Elasticsearch 中索引和搜索驼峰式或帕斯卡式单词的常见问题,提供灵活且精确的搜索结果。
Ashes Club
2026-09-21 00:57
Karauli Sarkar - Ishvariya Chikitsa Vigyan Kendra
2026-09-21 00:57
Gold rate Telugu
2026-09-21 00:57
CoinNexa VAULT.
2026-09-21 00:57
Crypto Talk Now
2026-09-21 00:38
Tieu Ai VN
2026-09-21 00:38
Trade with Renato Ulianov
2026-09-21 00:38
Professor Py: AI Engineering
2026-09-21 00:38
Tech with Muthu
2026-09-21 00:38
选择货币
US Dollar
USD
Chinese Yuan
CNY
Japanese Yen
JPY
South Korean Won
KRW
New Taiwan Dollar
TWD
Canadian Dollar
CAD
Euro
EUR
Pound Sterling
GBP
Danish Krone
DKK
Hong Kong Dollar
HKD
Australian Dollar
AUD
Brazilian Real
BRL
Swiss Franc
CHF
Chilean Peso
CLP
Czech Koruna KČ
CZK
Singapore Dollar
SGD
Indian Rupee
INR
Saudi Riyal
SAR
Vietnamese Dong
VND
Thai Baht
THB
选择货币
US Dollar
USD-$
Chinese Yuan
CNY-¥
Japanese Yen
JPY-¥
South Korean Won
KRW -₩
New Taiwan Dollar
TWD-NT$
Canadian Dollar
CAD-$
Euro
EUR - €
Pound Sterling
GBP-£
Danish Krone
DKK-KR
Hong Kong Dollar
HKD- $
Australian Dollar
AUD-$
Brazilian Real
BRL -R$
Swiss Franc
CHF -FR
Chilean Peso
CLP-$
Czech Koruna KČ
CZK -KČ
Singapore Dollar
SGD-S$
Indian Rupee
INR -₹
Saudi Riyal
SAR -SAR
Vietnamese Dong
VND-₫
Thai Baht
THB -฿