사용자가 적은 문장에서
특정 단어를 인식해서
DB에서 반응하여 출력하는 프로그램을 만들려합니다.

예를 들어
"안녕?" ==('안녕' 인식)==> "어 그래"
"넌바보야" ==('바보' 인식)==> "바다의 보배?"

이런식입니다.


아래는 시험험용으로 text 파일로 DB를 대체하고 있는 소스입니다.
Text 파일 내용 : 개나리, 말미잘, AAA

public static void main(String[] args) {
        BufferedReader reader = null;
        String str = "개나리?";
       
        try {
            reader = new BufferedReader(new FileReader("test.txt"));
                       
            String rl = reader.readLine();
           
            System.out.println(rl); // Test 파일 전체 출력
                       
            if(rl.contains(str))
                System.out.println("있다!");
            else
                System.out.println("네가 뭔말 하는 지 모르겠어!");
           
            reader.close();
        } catch (Exception e) {
            // TODO: handle exception
        }


이때 "개", "개나", "개나리", "개나리 "등은 인식하지만
기타외 문자가 붙을 시 어떻게 해야할 지 모르겠네요...
(기타외 문자가 붙으면 else문의 "네가 뭔말 하는 지 모르겠어!" 출력.)
StringTokenizer나 if를 쓰자니 너무 경우의 수가 많고... ㅠㅠ

좋은 방법이 없을까요?



아니면... DB에서 select문만으로 해결할 수 있는 방법이 있을까요?
예를 들어 Table이
┌────┬─────┐
│  word  │response│
├────┼─────┤
│  개나리│   진달래  │
└────┴─────┘
이렇게 작성되어 있을 때

String str = "진달래꽃";
...(중략)
ResultSet rs = stmt.executeQuery("select * from wordList "
                        + "where word like '%" + charsetChange(str) + "%';");
// charsetChange는 한글 인식을 위한 charset 변환 Method.

while (rs.next())
{
        String[] arr = new String[2];
        arr[0] = toUnicode(rs.getString("word"));
        arr[1] = toUnicode(rs.getString("response"));

        System.out.println(arr[0] + " : " + arr[1]);
}

이렇게 될 때

"개나리"라는 단어만 인식하여 response 컬럼에 있는 "개나리"를 출력할 수 있는 방법이 있을까요?



몇일을 고심했는 데...
답이 없네요.

일일이 경우 처리를 해서 캐노가다를 해야하는게 답인가요? ㅠㅠ

답변 부탁드리겠습니다....