Java:如何从mysql中的全文搜索中检索字符串

Java:如何从mysql中的全文搜索中检索字符串,java,mysql,full-text-search,Java,Mysql,Full Text Search,编辑4:问题源于使用列的字符串名称,而不是列编号,如下面nuzz所示 我搜索了一整天,不知道如何通过全文搜索返回字符串。当我直接在mysql命令提示符中键入它时,它可以正常工作;如果我只使用用户信息中的SELECT username,它也可以正常工作;但我对此一无所知 String result = ""; String request = "SELECT username FROM user_info WHERE MATCH (username) AGAINST ('themanager')

编辑4:问题源于使用列的字符串名称,而不是列编号,如下面nuzz所示

我搜索了一整天,不知道如何通过全文搜索返回字符串。当我直接在mysql命令提示符中键入它时,它可以正常工作;如果我只使用用户信息中的SELECT username,它也可以正常工作;但我对此一无所知

String result = "";
String request = "SELECT username FROM  user_info WHERE MATCH (username) AGAINST ('themanager');";

    Statement stmt = con.createStatement();
    ResultSet rs = stmt.executeQuery(request);

    while (rs.next()) {
        result +=  rs.getString("username") ;
        result += "\n";
    }
编辑1: 以下是表格的代码:

    Create table user_info ( username varchar(16),
                             password varchar(16),
                             email varchar(16),
                             PRIMARY KEY(username,email));
     ALTER table user_info add FULLTEXT(username,email);
抱歉,我还是新手,不知道如何从desc user_info复制代码而不发布打印屏幕

编辑2:oops错误的代码,但同样的问题

编辑3:刚刚列出了如何复制描述。输出为数据库中的所有用户提供了从用户_info;中选择用户名的信息;。我对数据库系统的细节一无所知,只是因为它是mysql的默认安装

+-----------------+-------------+------+-----+---------+-------+
| Field           | Type        | Null | Key | Default | Extra |
+-----------------+-------------+------+-----+---------+-------+
| username        | varchar(16) | NO   | PRI |         |       |
| password        | varchar(16) | YES  |     | NULL    |       |
| email           | varchar(50) | NO   | PRI |         |       |
+-----------------+-------------+------+-----+---------+-------+

好的,这适用于全文搜索。这是我跑的。首先我插入数据库(通过mysql控制台):

有一次,我跑了:

import static org.junit.Assert.*;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import org.junit.Test;

public class TestMysql {

    private String dbUrl = "jdbc:mysql://localhost:3306/test";
    private String user = "root";
    private String password = "password";
    private String dbClass = "com.mysql.jdbc.Driver";
    private String query = "SELECT username, email FROM  user_info WHERE MATCH (username, email) AGAINST ('themanager' IN BOOLEAN MODE)";


   @Test
   public void test() {

    try {

        Class.forName(dbClass);
        Connection con = DriverManager.getConnection (dbUrl, user, password);
        Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery(query);

        while (rs.next()) {
            String username = rs.getString(1);
            System.out.println("FOUND: '" + username + "'");
        } //end while

        con.close();
    } //end try

    catch(ClassNotFoundException e) {
        e.printStackTrace();
    }

    catch(SQLException e) {
        e.printStackTrace();
    }


  }

}
上面印着: 找到:“经理”

试试看。如果失败,请告诉我。如果是这样,很可能是连接问题


请参阅:有关全文查询的更多信息

请在表user_info上进行“描述”,并向我们显示列类型是什么?为什么不能复制描述结果的输出?您准备的语句看起来正确,您得到的错误是什么。还发布从用户信息中选择用户名的结果;您使用的是什么RDBMS以及如何执行这些sql语句,例如desc,意思是您使用的是squirrel还是sqlplus等。该示例根本不使用全文:(这只是一个例子谢谢你。问题是使用用户名而不是1。太糟糕了,我再也无法恢复我23小时的生活。我已经用mysql了。@shahzeb代码工作得很好,通过全文搜索重新插入它。
import static org.junit.Assert.*;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import org.junit.Test;

public class TestMysql {

    private String dbUrl = "jdbc:mysql://localhost:3306/test";
    private String user = "root";
    private String password = "password";
    private String dbClass = "com.mysql.jdbc.Driver";
    private String query = "SELECT username, email FROM  user_info WHERE MATCH (username, email) AGAINST ('themanager' IN BOOLEAN MODE)";


   @Test
   public void test() {

    try {

        Class.forName(dbClass);
        Connection con = DriverManager.getConnection (dbUrl, user, password);
        Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery(query);

        while (rs.next()) {
            String username = rs.getString(1);
            System.out.println("FOUND: '" + username + "'");
        } //end while

        con.close();
    } //end try

    catch(ClassNotFoundException e) {
        e.printStackTrace();
    }

    catch(SQLException e) {
        e.printStackTrace();
    }


  }

}