알고리즘 스마트 검색 (3)

다음 내용 은 실질 적 인 검 사 를 받 지 못 했다.필 자 는 관련 수 요 를 사용 하지 않 았 기 때문에 일시 적 으로 유행 하여 자신의 사고방식 에 따라 탐구 했다.유 료 순위, 단어 우선 순위, 검 색 량 순위, 실효 성 등 을 고려 하지 않 았 다.오락 을 해 보 세 요. 이런 검색 을 해 본 적 이 있 는 큰 신의 농담 에 자신 이 헛 된 생각 을 하 게 될 수도 있 습 니 다.
2. 간단 한 알고리즘 단어 일치:
/**     
 *             ,         
 * @param str:         
 * Red_Ant 20181124
 */
public static final String PUTUATION = "。,、':∶;?‘’“”〝〞ˆˇ﹕︰﹔﹖﹑·¨….¸;!´?!~—ˉ|‖"〃`@﹫¡¿﹏﹋﹌︴ ﹟#﹩$﹠&﹪%*﹡﹢﹦﹤‐ ̄¯―﹨ˆ˜﹍﹎+= dealInputStr(String str) {
    /*            ,             (       )
     *   ,        String   
     */
    //1、           
    List resultLst = new ArrayList();
    //2、        ,                   
    List strLst = selectStrFromDataBase(str);//        ,  。    ,   !
    if(strLst.size() > 0) {
        resultLst.addAll(strLst);
    }
    //3、      ,        ,           str【       】
    //     ,        ,     。  ,     。
    String[] strs = str.split("");
    int strsLength = strs.length;
    List num = new ArrayList();
    for (int i = 0; i < strsLength; i++) {
        if(PUTUATION.contains(strs[i])) {
            num.add(i);
        }
    }
    //     ,           
    int j = 0;//         
    /*    ,         
     *              
     */
    String ss;
    List pttstrLst = new ArrayList();
    for (int i = 0; i < num.size(); i++) {
        if(i == num.size()-1) {
            ss = str.substring(j);
        }else {
            ss = str.substring(j, num.get(i));
        }
        pttstrLst.add(ss);
        strLst = selectStrFromDataBase(ss);
        if(strLst.size() > 0) {
            resultLst.addAll(strLst);
        }
        j = num.get(i) + 1;
    }
    /*4、               
     *         -1,         ,       ,        
     *     n ,  n+1   ,         。
     */
    String ss1;
    for (int i = 0; i < pttstrLst.size(); i++) {
        //jugeWord(String str),         !
        ss = pttstrLst.get(i);
        int len = ss.length() - 2;
        int s = 0;
        int strlen = ss.length();
        while (len > 1) {
            int len1 = strlen - 2;
            while (len1 < strlen-1) {
                ss1 = ss.substring(s, len1);
                if(!jugeWord(ss1)) {
                    strLst = selectStrFromDataBase(ss1);
                    if(strLst.size() > 0) {
                        resultLst.addAll(strLst);
                    }
                }
                s++;
                len1++;
            }
            len--;
        }
    }
    return resultLst;
}

[주의] 상기 방법 은 실제 장면 에서 의 응용 이 아니 라 고려 하지 않 은 요소 도 많다. 필 자 는 이 방법 이 통 하면 고려 하고 최적화 할 만 한 부분 이 많다 고 생각한다.

좋은 웹페이지 즐겨찾기