2016-09-27 74 views
8

Sorguda emojiyi veya metinde arama yapmak için başka bir dizin türünü kabul eden Tam Metin Araması oluşturmak istiyorum. Örneğin, bu yazıya sahibim: Playa @CobolIquique h' ve PostgreSQL, emojiler üzerinde garip bir şekilde ayrıştırır.Postgres - Tam Metin emojis'i kabul et

Hata ayıklama, SELECT * FROM ts_debug('english','Playa @CobolIquique h'); kullanarak ben şu sonucu vardır:

Results 1

Ve belirteç bir boşluk sembolü olarak kabul edilir neden bilmiyorum. Ayrıştırıcı SELECT * FROM ts_parse('default', 'Playa @CobolIquique h'); hata ayıklama Ben sadece aynı belirti olsun ve ts_token_type('default') belirteç türleriyle bir emoji türü (veya benzer bir şey) yok. Bu nedenle, dizeyi boşluklarla doğru şekilde bölmek için bir ayrıştırıcıyı nasıl oluşturabilirim ve emojiyi boş alanlar olarak düşünmüyor musunuz? veya Sorgularda emojiyi kullanabilecek bir metin dizini nasıl oluşturabilirim?

+0

Tam metin arama alışkın değilim, ancak farklı sözlüklerle (Kartopu gibi) denediniz mi? Bkz. Https://www.postgresql.org/docs/current/static/textsearch-dictionaries.html Bir sözlüğü özelleştirmeniz gerekebilir (önceki bağlantıdaki örneklere bakın). – pietrop

+0

Evet, farklı dictionaris'lerle denedim (zaten ihtiyaçlarım ile bir tane inşa ettim) ama sorun adım adım, yani çözümleyici): – FeanDoe

+0

"METİN YAZI ARAMA PARSERİ" ve "ALTER METİN ARAMA PARSERİ" ile denediniz mi? '? https://www.postgresql.org/docs/9.6/static/sql-createtsparser.html – pietrop

cevap

1

Varsayılan olarak farklı olan yeni bir çözümleyici oluşturmak için, bir C programcısı olmanız ve kendi PostgreSQL extension'unuzu yazmanız gerekir. Bu uzantı aşağıdaki işlevleri tanımlamak gerekir:

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

Eğer pg_tsparser modülünü inceleyebilirsiniz Örnek olarak.