我要求用户在搜索框中输入多个以空格分隔的字符串。
我必须以这样一种方式进行搜索:首先显示所有字符串匹配,然后匹配第二个标准并且至少匹配。
例如,如果用户搜索"设备失败到期",则必须显示匹配"设备失败到期",然后"设备失败"或"失败到期"和其他标准,atlast单一搜索模式。
任何人都可以建议我使用oracle DB中的java做好和最好的方法。
请以最佳方式告诉我如何做到这一点
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
public class Test {
String input; //input String
StringBuffer output; //Holds the output
String delimiter = ","; //Delimiter (default comma (,))
String arrayOfWords[];
List li=new ArrayList();
/*
* Generates combinations by applying the
* concept of recursion
*/
private void nextCombination(int position, int remainder)
{
output.append(arrayOfWords[position]+this.delimiter);
if (remainder == 1) {
li.add(output.substring(0,output.length()-1).replace(",",".*"));
// System.out.println(output.substring(0,output.length()-1));
} else {
for (int i = position + 1; i + remainder - 1 <= arrayOfWords.length; i++)
nextCombination(i, remainder - 1);
}
output.delete(output.indexOf(arrayOfWords[position]),output.length());
}
public void generateCombinations(String input, String delimiter)
{
output = new StringBuffer();
this.input = input;
this.delimiter = delimiter;
/*
* Splitting the words by delimiter and storing in
* an array.
*/
StringTokenizer buf = new StringTokenizer(input,delimiter);
int lengthOfArray = buf.countTokens();
arrayOfWords = new String[lengthOfArray];
int i = 0;
while(buf.hasMoreTokens())
{
arrayOfWords[i] = buf.nextToken();
i++;
}
for (int j = 1; j <= lengthOfArray; j++)
for (int k = 0; k + j <= lengthOfArray; k++)
{
nextCombination(k, j);
}
System.out.println(li);
}
public void generateCombinations(String input)
{
generateCombinations(input, this.delimiter);
}
/**
* @param args
*/
public static void main(String[] args) {
new Test().generateCombinations("SR,78,100",",");
}
}
然后我将生成序列然后我将查询每个记录的数据库.Plz我可以使用此代码和查询db