我開發必須執行在一個大表字符串搜索Android應用程序高效的字符串搜索(約500,000項與街道和地點名稱,所以只是每個條目的幾句話)。SQLite的:在大表
CREATE TABLE Elements (elementID INTEGER, type INTEGER, name TEXT, data BLOB)
請注意,只有20%的條目在「名稱」列中包含字符串。
執行下面的查詢差不多需要2分:
SELECT elementID, name FROM Elements WHERE name LIKE %foo%
我現在試圖用FTS3爲了加快查詢。這是相當成功的,查詢時間縮短到1分鐘(令人驚訝的數據庫文件大小僅增長了5%,這也是我的目的相當不錯)。
問題是,FTS3貌似不支持子字符串搜索,即如果我想在「foo bar」和「foobar」中找到「bar」,我只會得到「foo bar」,雖然我需要兩個結果。
所以其實我有兩個問題:
是否有可能進一步加快查詢?我的目標是查詢30秒,但我不知道這是真實的......
我怎樣才能使用FTS3真正的字符串搜索?
它需要很多*的粉碎來獲得子字索引搜索... – 2012-07-04 20:05:37
也許SQLite/FST不是在這種特定情況下的最佳方法..它似乎是一個[只讀] [後綴樹](http://en.wikipedia.org/wiki/Suffix_tree)可能更合適。雖然訣竅是在現有的合適的庫/工具中找到一個;-) – 2012-07-04 20:13:33
@pst,後綴樹聽起來很酷,但不幸的是,SQLite方法對於我的應用程序的主要功能至關重要。不過,快速搜索字符串會是一件「高興」的事情。 ;) – Aletheios