擁有大量文本語料庫(100k)和一個 ngram,示例:
查詢 - 獲取所有帶有標記 ['united' , 'airlines'] 的文本
我只想檢索兩個標記('united'、'airlines')完全匹配的文本,但我也希望任何標記(聯合->航空公司或'航空公司->聯合')之間的距離將最多K個位置。假設 k=2
我現在的查詢是:
query = {
"size": limit,
"query": {
"query_string": {"query": query,
"phrase_slop":2,
"default_operator":"AND"}
}
}
但似乎這不是正確的方法,因為我得到的結果之間有超過 2 個位置(令牌)。
任何想法?
uj5u.com熱心網友回復:
我找到了我的問題的答案:
在 ElasticSearch 中使用查詢字串型別查詢時,我們可以通過添加 ~k 來使用鄰近搜索,此時 k 是短語中單詞的最大編輯距離數。
對于主要問題中的查詢,添加鄰近搜索:
query = {
"size": limit,
"query": {
"query_string": {"query":"united airlines"~2,
"phrase_slop":2,
"default_operator":"AND"}
}
}
更多資訊可以在檔案中找到
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/526565.html
標籤:弹性搜索弹性搜索查询
