發布: 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://M8347457666/https://37666/https感謝這些優秀的用戶和 Stackexchange 社群的貢獻。請訪問這些連結以獲取原始內容和更多詳細信息,例如替代解決方案、主題的最新更新/開發、評論、修訂歷史記錄等。例如,問題的原始標題是:將大寫分成兩個單字的分詞器此外,根據 CC BY-SA 許可的內容(音樂除外)https://meta.stackexchange.com/help/licensing 原始問題帖子根據“CC BY-SA 4.0”獲得許可( https://creativecommons.org/licenses/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_servalase_change: truecase_changes 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 -฿