1

我有一个包含以下列的表格“问题”:

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

我会做到这一点,以便用户可以输入他可以提出问题的文本。现在,当他完成并按下按钮时,我想启动一个事件以获取与他的问题相似的问题,以便他可以选择正确的问题。

现在我怎样才能将用户的输入(问题)与问题表中的现有问题相匹配并找出类似的问题?

到目前为止我已经这样做了:我为这个例子做了一个字符串单词变量,那应该是一个完整的句子,比如“多少次”。

      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

所以它有效,但正如你所见,但我只能使用一个词搜索类似的模式。当用户应该输入一个完整的句子时,这将很难做到。

4

2 回答 2

1

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

于 2013-10-08T13:33:26.820 回答
0

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

于 2013-10-08T13:32:18.160 回答