⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 search.bsh

📁 Sequoia ERP是一个真正的企业级开源ERP解决方案。它提供的模块包括:电子商务应用(e-commerce), POS系统(point of sales),知识管理,存货与仓库管理
💻 BSH
字号:
import org.ofbiz.base.util.UtilHttp;import org.ofbiz.base.util.UtilMisc;import org.ofbiz.base.util.Debug;import org.ofbiz.base.util.UtilValidate;import org.ofbiz.base.util.StringUtil;import org.ofbiz.content.search.SearchWorker;import org.apache.lucene.analysis.Analyzer;import org.apache.lucene.analysis.standard.StandardAnalyzer;import org.apache.lucene.document.Document;import org.apache.lucene.search.Searcher;import org.apache.lucene.search.IndexSearcher;import org.apache.lucene.index.IndexReader;import org.apache.lucene.search.Query;import org.apache.lucene.search.TermQuery;import org.apache.lucene.search.BooleanQuery;import org.apache.lucene.index.Term;import org.apache.lucene.search.Hits;import org.apache.lucene.queryParser.QueryParser;import org.ofbiz.widget.html.HtmlFormWrapper;import org.ofbiz.product.feature.ParametricSearch;delegator = request.getAttribute("delegator");paramMap = UtilHttp.getParameterMap(request);queryLine = paramMap.get("queryLine");Debug.logInfo("in search, queryLine:" + queryLine, "");//formDefFile		= page.getProperty("formDefFile");//queryFormName		= page.getProperty("queryFormName");            //Debug.logInfo("in search, queryFormName:" + queryFormName, "");//HtmlFormWrapper queryWrapper = new HtmlFormWrapper(formDefFile, queryFormName, request, response);//context.put("queryWrapper", queryWrapper);//listFormName		= page.getProperty("listFormName");            //Debug.logInfo("in search, listFormName:" + listFormName, "");//HtmlFormWrapper listWrapper = new HtmlFormWrapper(formDefFile, listFormName, request, response);//context.put("listWrapper", listWrapper);siteId = paramMap.get("lcSiteId");            Debug.logInfo("in search, siteId:" + siteId, "");searchFeature1 = paramMap.get("SEARCH_FEAT");searchFeature2 = paramMap.get("SEARCH_FEAT2");searchFeature3 = paramMap.get("SEARCH_FEAT3");Map featureIdByType = ParametricSearch.makeFeatureIdByTypeMap(paramMap);            Debug.logInfo("in search, featureIdByType:" + featureIdByType, "");        combQuery = new BooleanQuery();        String indexPath = null;        Searcher searcher = null;        Analyzer analyzer = null;          try {            indexPath = SearchWorker.getIndexPath(null);            Debug.logInfo("in search, indexPath:" + indexPath, "");            searcher = new IndexSearcher(indexPath);            Debug.logInfo("in search, searcher:" + searcher, "");            analyzer = new StandardAnalyzer();          } catch(java.io.FileNotFoundException e) {            request.setAttribute("errorMsgReq", "No index file exists.");            Debug.logError("in search, error:" + e.getMessage(), "");          }        if (UtilValidate.isNotEmpty(queryLine) || UtilValidate.isNotEmpty(siteId) ) {//            reader = IndexReader.open("/usr/local/agi/ofbiz/applications/content/index");//            Debug.logInfo("in search, reader:" + reader, "");//            termEnum = reader.terms();//            while (termEnum.next()) {//                thisTerm = termEnum.term();//                Debug.logInfo("in search, term:" + thisTerm.toString(), "");//             //            }            Query query = null;            if (UtilValidate.isNotEmpty(queryLine)) {                query = QueryParser.parse(queryLine, "content", analyzer);                combQuery.add(query, true, false);            }            Debug.logInfo("in search, combQuery(0):" + combQuery, "");            if (UtilValidate.isNotEmpty(siteId)) {                termQuery = new TermQuery(new Term("site", siteId));                combQuery.add(termQuery, true, false);                Debug.logInfo("in search, termQuery:" + termQuery.toString(), "");            }            Debug.logInfo("in search, combQuery(1):" + combQuery, "");        }        if ( UtilValidate.isNotEmpty(searchFeature1) || UtilValidate.isNotEmpty(searchFeature2) || UtilValidate.isNotEmpty(searchFeature3) || !featureIdByType.isEmpty() ) {                featureQuery = new BooleanQuery();                anyOrAll = paramMap.get("any_or_all");                boolean featuresRequired = true;                if (anyOrAll != null && anyOrAll.equals("any"))                     featuresRequired = false;                    if (UtilValidate.isNotEmpty(searchFeature1) ) {                    termQuery = new TermQuery(new Term("feature", searchFeature1));                    featureQuery.add(termQuery, featuresRequired, false);                    Debug.logInfo("in search searchFeature1, termQuery:" + termQuery.toString(), "");                }                    if (UtilValidate.isNotEmpty(searchFeature2) ) {                    termQuery = new TermQuery(new Term("feature", searchFeature2));                    featureQuery.add(termQuery, featuresRequired, false);                    Debug.logInfo("in search searchFeature2, termQuery:" + termQuery.toString(), "");                }                    if (UtilValidate.isNotEmpty(searchFeature3) ) {                    termQuery = new TermQuery(new Term("feature", searchFeature3));                    featureQuery.add(termQuery, featuresRequired, false);                    Debug.logInfo("in search searchFeature3, termQuery:" + termQuery.toString(), "");                }                if (!featureIdByType.isEmpty()) {                    values = featureIdByType.values();                    iter = values.iterator();                    while (iter.hasNext()) {                        val = iter.next();                        termQuery = new TermQuery(new Term("feature", val));                        featureQuery.add(termQuery, featuresRequired, false);                        Debug.logInfo("in search searchFeature3, termQuery:" + termQuery.toString(), "");                    }                }                combQuery.add(featureQuery, featuresRequired, false);            }            if (searcher != null) {                Debug.logInfo("in search searchFeature3, combQuery:" + combQuery.toString(), "");                Hits hits = searcher.search(combQuery);                Debug.logInfo("in search, hits:" + hits.length(), "");                List contentList = new ArrayList();                HashSet hitSet = new HashSet();                for (int start = 0; start < hits.length(); start++) {                     doc = hits.doc(start);                     contentId = doc.get("contentId");                     content = delegator.findByPrimaryKeyCache("Content", UtilMisc.toMap("contentId", contentId));                     if (!hitSet.contains(contentId)) {                         contentList.add(content);                         hitSet.add(contentId);                     }                }                context.put("queryResults", contentList);             }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -