발단 코드, 어떻게 재구성하는지 봅시다.

7869 단어 재구성

    public void warmUpContactSearcher(IndexSearcher newSearcher) throws Exception {
        final Sort sortByName = new Sort(new SortField(FLD_NAME_LAST, SortField.STRING));
        final Analyzer analyzer = LuceneSearcher.getAnalyzer();
        final QueryParser parser = new QueryParser(FLD_COMPANY_KEYWORDS, analyzer);
        final int maxContactResults = 100;
        
        logger.debug("Contact search: company keyword jigsaw");
        Query query = getKeywordQuery(LuceneSearcher.FLD_COMPANY_KEYWORDS, "jigsaw");
        Sort sort = new Sort(new SortField(LuceneSearcher.FLD_COMPANY_NAME,
                SortField.STRING, false));
        newSearcher.search(query, null, maxContactResults, sort);
        
        logger.debug("Contact search: company keyword intel");
        query = new TermQuery(new Term(FLD_COMPANY_KEYWORDS, "intel"));
        newSearcher.search(query, null, maxContactResults, sortByName);
        
        logger.debug("Contact search: company keyword Intel Corporation");
        query = LuceneSearcher.getInstance().getKeywordQuery(FLD_COMPANY_KEYWORDS,
                "Intel Corporation");
        newSearcher.search(query, null, maxContactResults, sortByName);
        
        logger.debug("Contact search: company keyword :intel");
        query = parser.parse(FLD_COMPANY_KEYWORDS + ":Intel");
        newSearcher.search(query, null, maxContactResults, sortByName);
        
        logger.debug("Contact search: title keyword director");
        query = new TermQuery(new Term(FLD_TITLE_KEYWORDS, "director"));
        newSearcher.search(query, null, maxContactResults, sortByName);
        
        logger.debug("Contact search: title keyword :Director");
        query = parser.parse(FLD_TITLE_KEYWORDS + ":Director");
        newSearcher.search(query, null, maxContactResults, sortByName);
        
        logger.debug("Contact search: company class1 1100000");
        query = new TermQuery(new Term(FLD_COMPANY_CLASS1, "1100000"));
        newSearcher.search(query, null, maxContactResults, sortByName);
        
        char lastChar = 'z';
        String alphabet = "abcdefghijklmnopqrstuvwxy";
        for (int i = 0; i < alphabet.length(); i++) {
            String lowerName = alphabet.substring(i, i + 1);
            logger.debug("Contact search: last name " + lowerName + "-" + lastChar);
            query = new ConstantScoreRangeQuery(FLD_NAME_FIRST, lowerName,
                    String.valueOf(lastChar), true, false);
            newSearcher.search(query, null, maxContactResults, sortByName);
        }
        
        logger.debug("Contact search: last name smith");
        query = new TermQuery(new Term(FLD_NAME_LAST, "smith"));
        newSearcher.search(query, null, maxContactResults, sortByName);
        
        logger.debug("Contact search: company keyword intel, title keyword director");
        BooleanQuery booleanQuery = new BooleanQuery();
        booleanQuery.add(new TermQuery(new Term(FLD_COMPANY_KEYWORDS, "intel")),
                BooleanClause.Occur.MUST);
        booleanQuery.add(new TermQuery(new Term(FLD_TITLE_KEYWORDS, "director")),
                BooleanClause.Occur.MUST);
        newSearcher.search(booleanQuery, null, maxContactResults, sortByName);
        
        logger.debug("Contact search: company keyword intel, title keyword :Director");
        query = parser.parse("+" + FLD_COMPANY_KEYWORDS + ":Intel +" + FLD_TITLE_KEYWORDS
                + ":Director");
        newSearcher.search(query, null, maxContactResults, sortByName);
        
        logger.debug("Contact search: dept1 " + Constant.DEPT_ITIS);
        query = new TermQuery(new Term(FLD_DEPT1, "" + Constant.DEPT_ITIS));
        newSearcher.search(query, null, maxContactResults, sortByName);
        
        logger.debug("Contact search: dept1 " + Constant.DEPT_ITIS + 
                ", rank directory, state CA ");
        booleanQuery = new BooleanQuery();
        Query dept = new TermQuery(new Term(FLD_DEPT1, "" + Constant.DEPT_ITIS));
        booleanQuery.add(dept, BooleanClause.Occur.MUST);
        Query rank = new TermQuery(new Term(FLD_RANK, "" + Constant.RANK_DIRECTOR));
        booleanQuery.add(rank, BooleanClause.Occur.MUST);
        Query state = new TermQuery(new Term(FLD_STATE, ""
                + GeoConstant.US_STATE_CALIFORNIA));
        booleanQuery.add(state, BooleanClause.Occur.MUST);
        newSearcher.search(booleanQuery, null, maxContactResults, sortByName);
        
        logger.debug("Contact search: area code 415");
        query = new TermQuery(new Term(FLD_AREA_CODE, "415"));
        newSearcher.search(query, null, maxContactResults, sortByName);
        
        logger.debug("Contact search: rank other");
        query = new TermQuery(new Term(FLD_RANK, "500"));
        newSearcher.search(query, null, maxContactResults, sortByName);
        
        logger.debug("Contact search: state 209");
        query = new TermQuery(new Term(FLD_STATE, "209"));
        newSearcher.search(query, null, maxContactResults, sortByName);
        
        logger.debug("Contact search: company id C- 0000023080");
        query = new TermQuery(new Term(FLD_COMPANY_ID, "C- 0000023080"));
        newSearcher.search(query, null, maxContactResults, sortByName);
        
        logger.debug("Contact search: last name aa - al");
        booleanQuery = new BooleanQuery();
        booleanQuery.add(new TermQuery(new Term(FLD_IS_SEARCH_DISABLED,
                Boolean.FALSE.toString())), BooleanClause.Occur.MUST);
        booleanQuery.add(new ConstantScoreRangeQuery(FLD_NAME_LAST, "aa", "al", true,
                false), BooleanClause.Occur.MUST);
        newSearcher.search(booleanQuery, null, maxContactResults, sortByName);
        
        logger.debug("Contact search: last name aa - al");
        String queryText = "+(class1:1020000 class2:1020000 class3:1020000 class1:1030000 class2:1030000 class3:1030000 class1:1230000 class2:1230000 class3:1230000 class1:1060000 class2:1060000 class3:1060000 class1:1070000 class2:1070000 class3:1070000 class1:1100000 class2:1100000 class3:1100000 class1:1110000 class2:1110000 class3:1110000 class1:1120000 class2:1120000 class3:1120000 class1:1140000 class2:1140000 class3:1140000 class1:1160000 class2:1160000 class3:1160000 class1:1180000 class2:1180000 class3:1180000 class1:1190000 class2:1190000 class3:1190000 class1:1200000 class2:1200000 class3:1200000 class1:1210000 class2:1210000 class3:1210000 class1:1220000 class2:1220000 class3:1220000) +type:1 +(employees:40 employees:20 employees:30) +(revenue:40 revenue:20 revenue:30) +(rank:10 rank:30 rank:20) +(dept1:10 dept2:10 dept3:10 dept1:20 dept2:20 dept3:20) +country:9000 +state:9005";
        logger.debug("Contact search: " + queryText);
        query = parser.parse(queryText);
        newSearcher.search(query, null, maxContactResults, sortByName);
    }

좋은 웹페이지 즐겨찾기