es7.3.2中文+拼音分词 排除同音字
例如:
搜索“fuqiang”, “付強”,"腹腔","富強"?可以搜索到 這個可以接受
搜索: “付強”, "腹腔","富強"?可以搜索到 這個不能接受?
setting和mapping怎么寫可以實現? 搜索: “付強”, 排除 "腹腔","富強"?呢?
說明: 使用ES 7.3.2, 并且已經安裝了ik 和pinyin 插件
setting 定義
mapping定義
部分mapping:
?
? "pname" : {
? ? ? ? ? "type" : "text",
? ? ? ? ? "fields" : {
? ? ? ? ? ? "keyword" : {
? ? ? ? ? ? ? "type" : "keyword"
? ? ? ? ? ? }
? ? ? ? ? },
? ? ? ? ? "analyzer" : "tt_ik",
? ? ? ? ? "search_analyzer" : "tt_ik_search"
? ? ? ? },
? ? ? ? "productLayout" : {
? ? ? ? ? "type" : "keyword"
? ? ? ? }
?
部分setting:
"settings" : {
? ? ? "index" : {
? ? ? ? "number_of_shards" : "1",
? ? ? ? "blocks" : {
? ? ? ? ? "read_only_allow_delete" : "false"
? ? ? ? },
? ? ? ? "max_result_window" : "1000000",
? ? ? ? "analysis" : {
? ? ? ? ? "analyzer" : {
? ? ? ? ? ? "tt_ik" : {
? ? ? ? ? ? ? "filter" : [
? ? ? ? ? ? ? ? "lowercase","full_pinyin"
? ? ? ? ? ? ? ],
? ? ? ? ? ? ? "char_filter" : [
? ? ? ? ? ? ? ? "html_strip"
? ? ? ? ? ? ? ],
? ? ? ? ? ? ? "tokenizer" : "ik_max_word"
? ? ? ? ? ? },
? ? ? ? ? ? "tt_ik_search" : {
? ? ? ? ? ? ? "filter" : [
? ? ? ? ? ? ? ? "lowercase","full_pinyin"
? ? ? ? ? ? ? ],
? ? ? ? ? ? ? "char_filter" : [
? ? ? ? ? ? ? ? "html_strip"
? ? ? ? ? ? ? ],
? ? ? ? ? ? ? "tokenizer" : "ik_smart"
? ? ? ? ? ? }
? ? ? ? ? },
? ? ? ? ? ? "filter": {
? ? ? ? ? ??
? ? ? ? ? ? "full_pinyin" : {
? ? ? ? ? ? ? "keep_joined_full_pinyin" : "true",
? ? ? ? ? ? ? "keep_none_chinese_in_first_letter" : "false",
? ? ? ? ? ? ? "lowercase" : "true",
? ? ? ? ? ? ? "none_chinese_pinyin_tokenize" : "false",
? ? ? ? ? ? ? "keep_none_chinese_in_joined_full_pinyin" : "true",
? ? ? ? ? ? ? "keep_original" : "true",
? ? ? ? ? ? ? "keep_first_letter" : "false",
? ? ? ? ? ? ? "keep_separate_first_letter" : "false",
? ? ? ? ? ? ? "type" : "pinyin",
? ? ? ? ? ? ? "keep_none_chinese" : "true",
? ? ? ? ? ? ? "limit_first_letter_length" : "16",
? ? ? ? ? ? ? "keep_full_pinyin" : "false"
? ? ? ? ? ? }
? ? ? ? ? }
? ? ? ? }
數據量較大 只用到了全拼
我現在的理解是? 新建索引的時候 tt_ik? ? pname字段新建了拼音的倒排索引,搜索的時候輸入了? “付強”? 搜索分析器tt_ik_search 也引入了拼音 filter? 搜索“付強”->"fuqiang"? ? 數據量100w左右
修改:
把tt_ik_search 的filter 去掉full_pinyin ,看起來可以達到目的,反推過去意思就是 建立索引文檔的時候 “腹腔”、 “付強” ->“fuqiang”,但是實際搜索的時候 輸入 “付強” 用的是tt_ik_search不會轉換為 “fuqiang”去搜索,就可以達到上面的搜索效果,如果用戶輸入的是 “fuqiang”用的是tt_ik_search 底層的索引文檔是可以匹配到 “腹腔”、 “付強” 。暫時可以達到業務目的,只是支持全拼 ,暫時還沒支持 “fu強” 搜索, 搜索場景比較復雜 中文,拼音,英文,中文還要ik,jieba 分詞
總結
以上是生活随笔為你收集整理的es7.3.2中文+拼音分词 排除同音字的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言编fft算法程序,FFT算法的C语
- 下一篇: [vue] 在vue中使用this应该注