我正在使用以下列的表'问题':
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
所以它正在工作,但正如你所看到的,但我只能用一个单词搜索相似的模式。当用户输入整个句子时,这很难做到。
答案 0 :(得分:1)
根据您的解释,您希望从数据库中搜索类似的问题,但您必须根据某些关键字进行搜索,然后根据这些关键字,您必须根据要求使用“LIKE”或“REGEX”。要确定必要的关键字,您必须创建自己的逻辑算法。
答案 1 :(得分:0)
您要么必须编写自己的搜索算法,要么使用现有的搜索算法,例如http://sphinxsearch.com/或http://lucene.apache.org/ http://lucene.apache.org/solr/