我已經按照你的好建議,我已經使用了特里數據結構包含我dictionnary。我選擇的結構是this one感興趣的人民。
但是現在我又遇到了另一個問題:每次啓動我的應用程序時,我的trie數據結構的構建都太長了!也許我的字典太大了,或者我選擇的字典實現太不適合簡單的字典。
因此,即使在關閉應用程序(如註冊數據庫)之後,還是有一種方法來保存此結構,或者如果您認爲問題是由實現引起的,那麼您可以推薦我另一個嗎?
我對我的android項目有一個嚴重的問題。
這裏的目標是要計算所有可以用的6個字母
意甲進行的話要做到這一點,我有兩條表在我的BDD:
- 「字」與兩列:'_id'和'mots'
- 和'temp'臨時表 與相同的列。
「單詞」包含詞彙表的所有單詞(這是巨大的)和「臨時」包含的可與6個字母進行字母的所有可能的組合(至少使用3個字母)。
我試着在表中選擇'temp'這個詞,它是真正的,所以這個詞在表'詞'中。這裏是我的代碼來做到這一點:
我做的這包含佳信的話的第一選擇(至少3個字母的使用)
db.execSQL("CREATE TABLE temp2 (_id integer primary key autoincrement, mots text not null);");
db.execSQL("INSERT INTO temp2 (_id, mots) SELECT * FROM words WHERE mots like '%"+lettres.tab_char.get(0)+"%' OR mots like '%"+lettres.tab_char.get(1)+"%' "
+ "OR mots like '%"+lettres.tab_char.get(2)+"%' OR mots like '%"+lettres.tab_char.get(3)+"%' OR mots like '%"+lettres.tab_char.get(4)+"%' "
+ "OR mots like '%"+lettres.tab_char.get(5)+"%';");
(lettre.tab_char是一個ArrayList(漢字)其中包含用來在臨時組合)
我做一個表格「TEMP2」和「溫度」之間加入字母:
String MY_QUERY = "SELECT temp2._id, temp2.mots FROM temp2 INNER JOIN temp ON temp2.mots = temp.mots;";
Cursor test = db.rawQuery(MY_QUERY, null);
之後,我把我的價值觀爲列表顯示。
它的作品,但它真的很慢:你能幫我嗎?
首先,感謝您對你的興趣。事實上,我想設計一個基於字母的遊戲:你有6個字母,你必須輸入你可以用這些字母重新制作的所有單詞(字母只能按時使用)。 所以我有一個生成6個字母系列的算法。 我有我的詞彙表(379 000條目)和我用這個算法生成的組合表格:http://www.merriampark.com/comb.htm 這些SQL查詢是我發現的方法每個級別的解決方案。 – Paul