📄 search.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 + -