匹配字符串输入文本与MySQL和Java中的现有字符串

时间:2013-10-08 13:26:48

标签: java mysql regex database

我正在使用以下列的表'问题':

ID (primary key)
question(Question subject/title)
answer(answer to the question)

我会这样做,以便用户可以输入他可以提出问题的文本。现在,当他完成并按下一个按钮时,我想要发起一个事件以获得类似于他的问题的问题,这样他就可以选择正确的问题。

现在我如何将用户的输入(问题)与问题表中的现有问题进行匹配并获得类似的问题?

到目前为止,我已经完成了这个:我为这个例子制作了一个String字变量,这应该是一个像“多少次”一样的完整句子。

      Connection conn = null;
      PreparedStatement  st = null;
      ResultSet rs = null;

      String word= "'%times%'";

       try
       {

           String url = "jdbc:mysql://localhost:3306/test";

           Class.forName ("com.mysql.jdbc.Driver");
           conn = DriverManager.getConnection (url,"root","root");
           st = conn.prepareStatement("SELECT * FROM qa WHERE question LIKE " + word);
           rs = st.executeQuery();

           while (rs.next()) {
                System.out.print(rs.getInt(1));
                System.out.print(": ");
                System.out.println(rs.getString(2));
                System.out.print(": ");
                System.out.println(rs.getString(3));
            }
       }

我得到了输出:

2: how many times should you eat per day
: five times

所以它正在工作,但正如你所看到的,但我只能用一个单词搜索相似的模式。当用户输入整个句子时,这很难做到。

2 个答案:

答案 0 :(得分:1)

根据您的解释,您希望从数据库中搜索类似的问题,但您必须根据某些关键字进行搜索,然后根据这些关键字,您必须根据要求使用“LIKE”或“REGEX”。要确定必要的关键字,您必须创建自己的逻辑算法。

答案 1 :(得分:0)

您要么必须编写自己的搜索算法,要么使用现有的搜索算法,例如http://sphinxsearch.com/http://lucene.apache.org/ http://lucene.apache.org/solr/