2016-09-27 38 views
8

我想創建一個接受表情符號的全文本搜索,或另一種類型的索引來搜索文本。例如,我有這樣的文字:Playa @CobolIquique h'和PostgreSQL在emojis上進行奇怪的解析。Postgres - 全文搜索以接受表情符號

調試,使用SELECT * FROM ts_debug('english','Playa @CobolIquique h');我有以下結果:

Results 1

而且我不知道爲什麼令牌被認爲是一個空間的象徵。如果我調試解析器SELECT * FROM ts_parse('default', 'Playa @CobolIquique h');我只是得到相同的標記,並且與標記類型ts_token_type('default')沒有表情符號類型(或類似的東西)。那麼,如何創建一個解析器來正確地將空格與空格分開,而不會將emojis視爲空格?或者我如何創建一個可以在查詢中使用表情符號的文本索引?

+0

我不習慣全文搜索,但是您是否嘗試過使用不同的字典(如雪球)?請參閱https://www.postgresql.org/docs/current/static/textsearch-dictionaries.html也許您必須自定義字典(請參閱上一個鏈接中的示例)。 – pietrop

+0

是的,我已經嘗試了不同的dictionaris(我已經建立一個與我的需求),但問題是前一步,這是解析器): – FeanDoe

+0

你有沒有嘗試與'CREATE TEXT SEARCH PARSER'和'ALTER TEXT SEARCH PARSER '? https://www.postgresql.org/docs/9.6/static/sql-createtsparser.html – pietrop

回答

1

要創建一個與默認分析器不同的新分析器,您應該是C程序員,您應該編寫自己的PostgreSQL extension。這個擴展應該定義以下功能:

start_function(); 
gettoken_function(); 
end_function(); 
lextypes_function(); 
headline_function(); // optional 

正如你可以檢查pg_tsparser模塊的例子。