Java: как получить строку из полнотекстового поиска в MySQL - PullRequest
1 голос
/ 18 июля 2011

Изменить 4: проблема возникла из-за использования строкового имени столбца вместо номера столбца, как указано ниже при помощи nuzz

Я искал весь день и не могувыяснить, как получить полнотекстовый поиск, чтобы вернуть строку.Он отлично работает, когда я набираю его непосредственно в командной строке mysql, а также отлично работает, если я просто использую SELECT username FROM user_info;но я ничего с этим не получаю.

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: неверный код, но та же проблема.

Редактировать 3: Просто выяснил, как скопировать деск.Вывод дает мне всех пользователей в базе данных для SELECT username FROM user_info ;.Я не имею ни малейшего понятия о специфике моей системы баз данных только в том, что это установка по умолчанию mysql.

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

1 Ответ

2 голосов
/ 18 июля 2011

Хорошо, это работает для полнотекстового поиска. Вот что я бежал. Сначала я вставил в базу данных (через консоль mysql):

insert into user_info values('themanager', 'password', 'email@test.com');

Как только у меня было это, я бежал:

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();
    }


  }

}

Это напечатано: НАЙДЕНО: 'themanager'

Попробуй это. Дайте мне знать, если это не удастся. Если это так, это может быть проблема с подключением

см. http://www.petefreitag.com/item/477.cfm для получения дополнительной информации о запросах FULLTEXT

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...