2011-08-15 30 views

回答

4

沒有,只有標記者=搬運工

當我指定標記生成器= ICU,我得到 「android.database.sqlite.SQLiteException:未知標記者:ICU」

而且,這個鏈接提示,如果Android的沒「T編譯它在默認情況下,它不會 提供 http://sqlite.phxsoftware.com/forums/t/2349.aspx

+0

謝謝。這證實了我的懷疑。太糟糕了。 :( –

+5

我在2年前http://code.google.com/p/android/issues/detail?id=9199報道了這個問題,但Google一直在優先處理動態壁紙,包括觸摸波,關機動畫,不安全的解鎖方法(臉部解鎖),...這樣的問題 – Eduardo

+0

@gregm,鏈接已死亡 – Suragch

1

對於API Level 21或更高版本,我測試並發現ICU標記器已經可用。

但是,要支持90%以上的設備,可以制定一些解決方法。我有一個解決方法的想法,這也是我的另一個問題中提到的:Work around of Android SQLite full-text search for Asian text

您可以將ICU標記器函數作爲獨立模塊移植到java或本機Android模塊中,但不直接涉及SQLite。然後使用「外部內容表」鏈接到虛擬表(由FTS4支持)。

當添加元組,單獨tokenzier正常添加內容到外部內容表,但調用支架加入到虛擬索引表之前添加人工空格的話的邊界。

在進行元組刪除時,再次調用tokenzier以更新具有人造空間的內容表,然後刪除虛擬表元組,然後刪除內容表元組。

這是一個有點棘手,但比較另一種重新編譯完整的SQLite的選項,它已經少得多的努力。

對於外部內容表,它是如何工作的,請參考https://www.sqlite.org/fts3.html#section_6_2_2

可用ICU分詞器其實是有在Android的SDK。使用BreakIterator.getWordInstance。看起來它甚至支持諸如中文等語言的基於字典的標記器。 http://developer.android.com/reference/java/text/BreakIterator.html