當前位置:成語大全網 - 英語詞典 - 如何在搜索引擎中實現完美匹配查詢

如何在搜索引擎中實現完美匹配查詢

字段被逐字分割,然後通過短語查詢進行搜索。

在ES中,可以實現逐詞切分的分詞器是NGram。

Ngram分詞的公文地址:?

",分詞的結果是["s "," h "," I "," n "," y "," k "," e "," @ "," 1 "," 8 "," 9 ","。”、“c”、“n。

& ltpre?name="code "?class="javascript " >/index_name/

{?

“設置”:{?

「分析」:?{?

“分析器”:{

" charSplit ":?{?

“類型”:“自定義”,?

“記號賦予器”:" ngram_tokenizer "?

}?

},?

“記號賦予器”:{?

" ngram_tokenizer ":?{?

“類型”:“nGram”,?

“min_gram”:"1",?

" max_gram ":?"1",?

" token_chars ":?[?

“信”,?

“數字”,?

“標點”?

]?

}?

}?

}?

}?

}在上面的語句中,構建了壹個名為“charSplit”的分析器。它使用壹個名為“ngram_tokenizer”的Ngram分詞器。

您可以使用下面的語句測試charSplit分析器,您可以看到逐字的效果:

卷曲?-帖子?",?

“類型”:“短語”,?//類型被指定為短語?

“泔水”:0,//slope指定允許每個相鄰單詞相隔多遠。在此將其設置為0以實現完美匹配。?

“字段”:[?

“發件人”?

],?

“分析器”:“charSplit”,?//分析器指定為charSplit?

" max_expansions ":?1

}?

},?

“突出顯示”:{//測試高光是否正常?

"前置標簽":?[?

“& ltb >;?

],?

“post_tags”:[?

“& lt/b & gt;?

],?

"碎片大小":?100,?

"片段數量":?2,?

"要求_字段_匹配":?真的嗎?

“字段”:{?

“發件人”:{}?

}?

}?

短語查詢本來的功能就是做短語查詢,短語查詢有壹個重要的特點:順序。我們利用其匹配的有序性,將slop限制為0,這樣就可以實現完全的匹配查詢。

上述語句返回的結果是:

{?

“拍了”:18,?

"超時":?假的,?

" _shards ":?{?

“總計”:9,?

“成功”:9,?

“失敗”:0?

},?

“點擊數”:{?

“總計”:1,?

" max_score ":?0.40239456,?

“點擊數”:[?

{?

" _index ":?“索引名稱”,

" _type ":?“類型名稱”,

" _id ":?“AU9OLIGOZN4dLecgyoKp”,?

" _score ":?0.40239456,?

" _source ":?{?

“發件人”:"18977314000?& lt18977314000 @ 189 . cn & gt;,?李x?& lt18977314000 @ 189 . cn & gt;,?秦x?& lt18977314000 @ 189 . cn & gt;,?劉x?& lt18977314000 @ 189 . cn >?

},?

“突出顯示”:{?

“發件人”:[?

"18977314000?& lt18977314000 & lt;b & gt@ & lt/b & gt;& ltb & gt1 & lt;/b & gt;& ltb & gt8 & lt/b & gt;& ltb & gt9 & lt/b & gt;& ltb & gt。& lt/b & gt;& ltb & gtc & lt/b & gt;& ltb & gtn & lt/b & gt;& gt,?李x?& lt18977314000 & lt;b & gt@ & lt/b & gt;& ltb & gt1 & lt;/b & gt;& ltb & gt8 & lt/b & gt;& ltb & gt9 & lt/b & gt;& ltb & gt。& lt/b & gt;& ltb & gtc & lt/b & gt;& ltb & gtn & lt/b & gt;& gt,?秦淳x?& lt18977314000 & lt;b & gt@ & lt/b & gt;& ltb & gt1 & lt;/b & gt;& ltb & gt8 & lt/b & gt;& ltb & gt9 & lt/b & gt;& ltb & gt。& lt/b & gt;& ltb & gtc & lt/b & gt;& ltb & gtn & lt/b & gt;& gt,?劉x?& lt189773140"?

]

}?

}?

]?

}?

}至此,實現了完全匹配查詢。在實際環境中,使用NGram作為文字分析器時會更加細致。例如,有些字符需要用停用詞過濾掉。這些細節可以根據實際需要在構造分析器的時候添加濾波器來實現,這裏不再贅述。