Android中使用的SQLite版本是什么?
原因:我想知道如何处理模式迁移.较新的SQLite版本支持"ALTER TABLE"SQL命令,这将节省我不得不复制数据,删除表,重新创建表和重新插入数据.
我很难理解如何在Android上使用全文搜索(FTS).我已经阅读了关于FTS3和FTS4扩展的SQLite文档.而且我知道可以在Android上进行.但是,我很难找到任何我能理解的例子.
SQLite数据库表(已命名example_table)有4列.但是,只有一列(已命名text_column)需要为全文搜索编制索引.每行text_column包含长度从0到1000字不等的文本.总行数大于10,000.
text_column?补充说明:
example_table)对于非FTS查询来说效率低下.text_columnFTS表中的重复条目是不合需要的.这篇文章建议使用外部内容表.就像标题所说:我们可以使用...USING fts3(tokenizer icu th_TH, ...).如果可以,是否有人知道所支持的区域设置,以及它是否因平台版本而异?
我原以为Unicode61 Tokenizer可以支持 CJK --中文 日语 韩语\n我验证我的 sqlite 支持 fts5
\n\nsqlite> pragma compile_options;\nBUG_COMPATIBLE_20160819\nCOMPILER=clang-9.0.0\nDEFAULT_CACHE_SIZE=2000\nDEFAULT_CKPTFULLFSYNC\nDEFAULT_JOURNAL_SIZE_LIMIT=32768\nDEFAULT_PAGE_SIZE=4096\nDEFAULT_SYNCHRONOUS=2\nDEFAULT_WAL_SYNCHRONOUS=1\nENABLE_API_ARMOR\nENABLE_COLUMN_METADATA\nENABLE_DBSTAT_VTAB\nENABLE_FTS3\nENABLE_FTS3_PARENTHESIS\nENABLE_FTS3_TOKENIZER\nENABLE_FTS4\nENABLE_FTS5\nRun Code Online (Sandbox Code Playgroud)\n\n但令我惊讶的是它根本找不到任何中日韩单词。这是为什么 ?
\n\nsqlite> CREATE VIRTUAL TABLE ft5_test USING fts5(content, tokenize = \'porter unicode61 remove_diacritics 1\');\nsqlite> INSERT INTO ft5_test values(\'\xe4\xb8\xba\xe4\xbb\x80\xe4\xb9\x88\xe4\xb8\x8d\xe6\x94\xaf\xe6\x8c\x81\xe4\xb8\xad\xe6\x96\x87 fts5 does not seem to work for chinese\');\nsqlite> select * from ft5_test where ft5_test = \'\xe4\xb8\xad\xe6\x96\x87\';\nsqlite>\nsqlite> select * from ft5_test where ft5_test = \'Chinese\';\n\xe4\xb8\xba\xe4\xbb\x80\xe4\xb9\x88\xe4\xb8\x8d\xe6\x94\xaf\xe6\x8c\x81\xe4\xb8\xad\xe6\x96\x87 fts5 does not seem to work for chinese\nRun Code Online (Sandbox Code Playgroud)\n\n- - - - - - - 更新 - …
我正在Android中创建自己的文本处理器(一个自定义垂直脚本TextView for Mongolian).我想我必须自己找到所有的断线位置,以便我可以实现换行,但后来我发现了BreakIterator.这似乎找到了各种语言中的字符,单词,行和句子之间的所有可能的中断.
我正在努力学习如何使用它.该文件是超过平均水平有帮助,但它仍然难以从只是阅读理解.我还找到了一些教程(见这里,这里和这里),但他们缺乏我正在寻找的输出的完整解释.
我正在添加这个Q&A风格的答案,以帮助自己学习如何使用BreakIterator.
除了Java之外,我正在制作这个Android标签,因为它们之间显然存在一些差异.此外,Android现在支持ICUBreakIterator,未来的答案可能会解决这个问题.
在sqlite中我:
create virtual MyTable (tokenize =icu ,id text,subject text,abstract text)insert info MyTable (id,subject,abstract) values (?,?,?)
所以我有行???????fmowomrogmeog?wfomgomrg????erz当我执行select id from MyTable where MyTable match ‘z*’它不返回任何东西?每当我搜索单个字母时它什么都不返回。但是,如果我搜索“m”或“??” 或'?'?它有效。
我知道 sqlite 只支持前缀,所以我使用的是 ICU。我犯了一个错误吗?
请注意,我已经查看了 Foxmail 上的源代码,在我看来,我可以搜索“、”、“f”等。