使用 Postgres 時,您可以使用 ts_vector 將資料庫欄位中的字串索引為向量。(https://www.postgresql.org/docs/10/datatype-textsearch.html#DATATYPE-TSVECTOR)
ElasticSearch 有類似的概念嗎?
uj5u.com熱心網友回復:
text當您將字串索引到欄位中時,這幾乎就是 ES 在后臺所做的事情。
讓我們從您提供的鏈接中獲取第一個示例:a fat cat sat on a mat and ate a fat rat
使用 PGtsvector型別,將分析和索引以下令牌
a and ate cat fat mat on rat sat
如果要保留位置,則需要指定它們,如下所示:
a:1 fat:2 cat:3 sat:4 on:5 a:6 mat:7 and:8 ate:9 a:10 fat:11 rat:12
而使用 ES,位置會自動保留,而無需指定它們。也可以告訴ES不要記錄(節省空間)
使用 EStext型別和standard分析器,將對以下標記進行分析和索引
a fat cat sat on a mat and ate a fat rat
使用english分析器,我們得到了這個(去除停用詞,詞干等)
fat cat sat mat at fat rat
ES 不按字母順序存盤標記,它對自由文本搜索也沒有真正的幫助。此外,它不會洗掉重復項(盡管可以這樣做),因為這會干擾檔案和索引中的令牌頻率,從而干擾評分。
基本上,兩者都索引幾乎相同的標記,盡管 ES 本質上是一個搜索引擎,并且以更優化的方式進行。在查看tsquery型別時,ES 中的自由文本搜索也更加用戶友好。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/428933.html
標籤:PostgreSQL 弹性搜索 向量
上一篇:如何使用SpringDataElasticsearch洗掉索引?
下一篇:Opensearchclient.update(python)上的“document_missing_exception”
