基于文本模式从Oracle数据库中搜索文本

时间:2014-03-26 18:21:21

标签: java oracle spring-mvc

我要求用户在搜索框中输入多个以空格分隔的字符串。

我必须以这样一种方式进行搜索:首先显示所有字符串匹配,然后匹配第二个标准并且至少匹配。

例如,如果用户搜索"设备失败到期",则必须显示匹配"设备失败到期",然后"设备失败"或"失败到期"和其他标准,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

0 个答案:

没有答案