Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用西班牙语搜索姓名_Java_Mysql_Hibernate_Primefaces - Fatal编程技术网

Java 用西班牙语搜索姓名

Java 用西班牙语搜索姓名,java,mysql,hibernate,primefaces,Java,Mysql,Hibernate,Primefaces,我有一个问题,我有一个具有以下属性的表 我想从输入的名称或文档编号中进行搜索   我正在使用Primefaces、Hibernate和数据库mysql 此搜索必须支持以下匹配: 在输入中: Martín Donofrio Juan (pe_nombres) Perez (pe_apellido_p or pe_apellido_m) 结果: Martin martíN D’onofrio donofrio Juan Antonio Mariscal Peres Juan Rupe

我有一个问题,我有一个具有以下属性的表

我想从输入的名称或文档编号中进行搜索   我正在使用Primefaces、Hibernate和数据库mysql 此搜索必须支持以下匹配:

在输入中:

Martín  
Donofrio
Juan (pe_nombres) Perez (pe_apellido_p or pe_apellido_m)
结果:

Martin
martíN
D’onofrio
donofrio
Juan Antonio Mariscal Peres
Juan Ruperto Péres
在输入中:

Martín  
Donofrio
Juan (pe_nombres) Perez (pe_apellido_p or pe_apellido_m)
结果:

Martin
martíN
D’onofrio
donofrio
Juan Antonio Mariscal Peres
Juan Ruperto Péres
在输入中:

Martín  
Donofrio
Juan (pe_nombres) Perez (pe_apellido_p or pe_apellido_m)
结果:

Martin
martíN
D’onofrio
donofrio
Juan Antonio Mariscal Peres
Juan Ruperto Péres
作为一个临时解决方案,我做了以下几点

 StringTokenizer st = new StringTokenizer(posNombre);
 List<String> busqueda = new ArrayList<String>();
            while (st.hasMoreTokens()) { // este ciclo es para comprobar cuando
                                            // se
                                            // acaba de procesar tu cadena
                String palabra = st.nextToken();// esto lee la palabra siguiente
                                                // en
                                                // la cadena
                palabra = removeTildes(palabra);
                // cadenaBD = cadenaBD.replaceAll(" ", "");
                palabra = palabra.replaceAll("'", "");
                palabra = palabra.replaceAll("-", "");
                palabra = palabra.toLowerCase();
                busqueda.add(palabra);
            }
            List<Postulante> postulanteDB = postulanteDao.listarPostulante();
            listaCoincidenciasPostulantes = new ArrayList<Postulante>();
            String cadenaBD;

            for (Postulante p : postulanteDB) {
                cadenaBD = p.getPersona().getPeNombres() + " "
                        + p.getPersona().getPeApellidoP() + " "
                        + p.getPersona().getPeApellidoM();
                cadenaBD = removeTildes(cadenaBD);
                cadenaBD = cadenaBD.replaceAll(" ", "");
                cadenaBD = cadenaBD.replaceAll("'", "");
                cadenaBD = cadenaBD.replaceAll("-", "");
                cadenaBD = cadenaBD.toLowerCase();
                int contador = 0;
                int tamanio = busqueda.size();
                for (String b : busqueda) {
                    if (p.getPersona().getPeDocumento().indexOf(b) != -1) {                
                        listaCoincidenciasPostulantes.add(p);
                        break;
                    } else {
                        if (cadenaBD.indexOf(b) != -1) {
                            contador++;
                            if (tamanio == contador) {
                                listaCoincidenciasPostulantes.add(p);
                                break;
                            }
                        }
                    }
                }
            }  
StringTokenizer st=新的StringTokenizer(posNombre);
List busqueda=new ArrayList();
而(st.hasMoreTokens()){//este ciclo es para comprobar cuando
//硒
//卡德纳河相思酒店
String palabra=st.nextToken();//esto lee la palabra siguiente
//嗯
//卡德纳酒店
帕拉布拉=拆除石板(帕拉布拉);
//cadenaBD=cadenaBD.replaceAll(“,”);
palabra=palabra.replaceAll(“,”);
palabra=palabra.replaceAll(“-”,”);
palabra=palabra.toLowerCase();
加上(帕拉布拉);
}
List postulanteDB=POSTULANTDAO.listarPostulante();
ListaConcidenciasPostulates=新的ArrayList();
弦乐有节奏;
对于(postatlante p:postatlantedb){
cadenaBD=p.getPersona().getPeNombres()+“”
+p.getPersona().getPeApellidoP()+“”
+p.getPersona().getPeApellidoM();
cadenaBD=移除的Tildes(cadenaBD);
cadenaBD=cadenaBD.replaceAll(“,”);
cadenaBD=cadenaBD.replaceAll(“,”);
cadenaBD=cadenaBD.replaceAll(“-”,”);
cadenaBD=cadenaBD.toLowerCase();
int contador=0;
int-tamanio=busqueda.size();
用于(字符串b:busqueda){
如果(p.getPersona().getPeDocumento().indexOf(b)!=-1){
增加(p);
打破
}否则{
if(cadenaBD.indexOf(b)!=-1){
contador++;
如果(塔曼尼奥==康塔多){
增加(p);
打破
}
}
}
}
}  

我想知道这个搜索是否是最优的,谢谢。

我不知道它是否对您有帮助,但您的问题让我想到了这个问题:类似的东西,但我认为它不是搜索数据库的正确方法。因为我从数据库中获取数据,然后逐个连接和替换寄存器。