私はsqliteを使用してチャットボットアプリを開発しています。チャットボットは人間対人間のチャットをシミュレートするプログラムです! 私のアプリでは、ユーザーが入力として何かを入力し、それを Java および SQLite クエリの変数として使用します。たとえば、次のテーブルを検討してください。
ID - ユーザー - チャットボット
1 - どのように - どのように知ることが重要ですか
2 - お元気ですか - 私は元気です
cursor = db.rawQuery("SELECT chatbot FROM sentence"+
" WHERE ? LIKE '%' || " + USER + " || '%'"
,new String[] { newMessage });
このコードはほとんどの場合うまく機能しますが、次のような場合は機能しません: ユーザーが入力を入力するとき、お元気ですか? 正しい回答である「私は元気です」を選択しますが、残念ながら「方法を知ることは重要ですか?」も選択します。 、
このコードを使用して、ユーザー列の最大長を持つレコードのみを選択しました。
cursor = db .rawQuery( "SELECT shompet FROM sentence" +
"WHERE LENGTH(user) = SELECT MAX(LENGTH(user)) from sentence "
+ " WHERE ? LIKE '%' || " + USER + " || '%'", new String[] {
newMessage });
しかし、シミュレーターで実行すると、閉じてこの「アプリが停止しました」と表示されます。構文エラーがあると思います。
あなたのアドバイスを待って、この構文を修正するか、この問題を処理する別の方法を教えてください!