以前から、Javaで複数語検索プログラムを作りたくて。

備忘録

Googleみたいに、検索ボックスに複数の語句をスペースなどで分けて複数語検索をかける仕組みがよくわからん。
だけど、たけぽんさんから教えてもらった、Vectorでなんとかなるか?
ちょっと、エクリプスでコード書いて、こぴぺ。

//Vector_Sample1.java
//半角スペース,カンマ,全角スペース,プラスなどの区切りで、複数語に分けて、それをSQL(select文)にかけれるか?

import java.io.IOException; //とりあえず。
import java.util.Vector;

class Vector_Sample1{
public static void main(String args) throws IOException{ //とりあえず。
System.out.println("Hello World!!");
String str = "a b,c d+e";
System.out.println("String: "+str);
Vector vec = new Vector();
if(str!=null && str.length()>0){
//String str2 = new String(str.getBytes("iso-8859_1"),"UTF-8")
//なぜか、処理されない例外の型 UnsupportedEncodingException が出てしまう。OTZ
String str2 = str.replaceAll("\\+", " ").replaceAll(" ", " ").replaceAll(",", " ");
String str3
= str2.split(" ");
for(int i=0;i<str3.length;i++){
vec.add(str3[i]);
}
System.out.println("VectorSize: "+vec.size()+"\n");
for(int i=0;i<vec.size();i++){
if(i==0 && vec.size()==1){
str3[i] = "select column1,column2 "+"\n"
+ "from database.table "+"\n"
+ "where (column1 like '%" + str3[i]+"%' || column2 like '%" + str3[i]+"%');";
}else if(i==0 && vec.size()>1){
str3[i] = "select column1,column2 "+"\n"
+ "from database.table "+"\n"
+ "where (column1 like '%" + str3[i] + "%' || column2 like '%" + str3[i]+"%') ";
}
if(i>0 && i<vec.size()-1){
str3[i] = "|| (column1 like '%" + str3[i]+"%' || column2 like '%" + str3[i]+"%') ";
}
if(i>0 && i==vec.size()-1){
str3[i] = "|| (column1 like '%" + str3[i]+"%' || column2 like '%" + str3[i]+"%');";
}
System.out.println(str3[i]);
//str3[i]で、SQL文が通るのかな?
//今は、とりあえずSQL文が出力されるだけ。
}
}
}
}

出力結果:


Hello World!!
String: a b,c d+e
VectorSize: 5

select column1,column2
from database.table
where (column1 like '%a%' || column2 like '%a%')

(column1 like '%b%' column2 like '%b%')
(column1 like '%c%' column2 like '%c%')
(column1 like '%d%' column2 like '%d%')
(column1 like '%e%' column2 like '%e%');

ああ、だめだ。これは、for文の中だ。。。OTZ