门户页的搜索过程

门户页的搜索   过程


 1 ../search_Document_List.do?category=news&keyword='+encodeURIComponent(keyWord)

2 searchNameContext.xml :

<bean name="/search_Document_List.do" class="com.trs.cis4.search.view.controller.Search_Document_List_Controller">
			<property name="successView" value="search/search_document_list" />
		</bean>

3 Search_Document_List_Controller :

public ModelAndView _handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception, ExceptionUtil {
		PageInfo pageInfo = PageData.getRequestParams(request);
		Map<String, Object> model = new HashMap<String, Object>();

		String category = request.getParameter("category");
		if (StringUtil.isNotEmpty(category)) {
			model.put("category", category);
		}

		ShowProperty showProperty = CisFileReader.getSysShowProperty();

		String channelid = request.getParameter("channelid");
		List<SysChannel> sysChannels = null;
		if ("search".equals(category)) {
			sysChannels = this.sysChannelLogic.getAllShowChannels(Integer.valueOf(SysConst.PORTAlTYPE_SEARCH));
			model.put("sysChannels", sysChannels);
		}

		model.put("channelid", channelid);

		List<SysChannel> channels = this.sysChannelLogic.getChannelsByIds(channelid);
		QueryForm queryForm = SearchParamUtil.getQuery(request, showProperty, channels);   //keyword 封装在quertForm对象中
		queryForm.setChannelids(channelid);
		queryForm.setPrefixChar(this.prefixChar.trim());
		queryForm.setSuffixChar(this.suffixChar.trim());
		if (StringUtil.isEmpty(queryForm.getKeyWordAll())) {
			String redirectUrl = request.getParameter("redirectUrl");
			if (StringUtil.isNotEmpty(redirectUrl))
				return new ModelAndView(redirectUrl, model);
			if (StringUtil.isNotEmpty(this.defaultRedirectView)) {
				return new ModelAndView(this.defaultRedirectView, model);
			}

		}

		String forbidWords = CisFileReader.getSysForbidWords();

		String keyWord = queryForm.getKeyWord();
		if ((StringUtil.isNotEmpty(keyWord)) && (forbidWords.indexOf(keyWord.trim()) != -1)) {
			pageInfo.setListItems(new ArrayList());
			pageInfo.setAllRecords(0);
			model.put("pageInfo", pageInfo);
			model.put("showProperty", showProperty);
			request.getSession().removeAttribute("queryFormSession");
		} else {
			pageInfo = setCountPerPage(request, pageInfo, showProperty);

			String orderby = disposeOrderBy(request, pageInfo, model, showProperty.getIfUseUrllevel());
			model.put("orderby", orderby);

			pageInfo.setPicSize(1);

			long bt2 = System.currentTimeMillis();
			String searchCondition = queryForm.getTrsSql();

			if (queryForm.getListType() == SysConst.CHANNEL_LISTTYPE_PIC)
				pageInfo.setWebShowFields(this.docDocumentLogic.getListPicFieldsVector());
			else if (queryForm.getListType() == SysConst.CHANNEL_LISTTYPE_TITLE)
				pageInfo.setWebShowFields(this.docDocumentLogic.getListFieldsVector());
			else {
				pageInfo.setWebShowFields(this.docDocumentLogic.getListBriefFieldsVector());
			}

			this.log.info("查询条件为:" + searchCondition);
			List searchResult = this.docDocumentLogic.search(searchCondition, pageInfo, true);
			request.getSession().setAttribute("queryFormSession", queryForm);
			long consumeTime = System.currentTimeMillis() - bt2;
			this.log.info("检索共耗时:" + consumeTime);
			if (searchResult != null) {
				List dataList = (List) searchResult.get(1);
				pageInfo.setListItems(dataList);
				pageInfo.setAllRecords(((Integer) searchResult.get(0)).intValue());
			} else {
				pageInfo.setListItems(new ArrayList());
				pageInfo.setAllRecords(0);
			}

			if (showProperty.getIfUsingCkm().booleanValue()) {
				String[] pinyin = pinyinCheck(keyWord, queryForm, orderby, pageInfo, showProperty);
				model.put("pinyin", pinyin);

				String[] recomWords = getRelatedPhrases(keyWord);   加载词典demo失败
				model.put("recomWords", recomWords);
			}

			if (queryForm.getListType() != SysConst.CHANNEL_LISTTYPE_PIC) {
				disposeSimRelCount(pageInfo);
			}

			DocUtils.checkPicture(pageInfo.getListItems());
			if (showProperty.getIfUsingRdb().booleanValue()) {
				String filterKeyWord = queryForm.getKeyWordAll();
				filterKeyWord = filterKeyWord(filterKeyWord);

				if ((StringUtil.isNotEmpty(filterKeyWord)) && (filterKeyWord.length() < 20)) {
					try {
						saveOrUpdateKeyWord(filterKeyWord);
					} catch (Exception e) {
						this.log.info("save keyword exception!", e);
					}
				}

				List spanList = this.docTimeSpanLogic.getShowTimeSpans(showProperty.getTimeSpanNum().intValue());
				model.put("spanList", spanList);

				getFakeResults(request, pageInfo, model, queryForm, keyWord);
			}

			PageData.calculationPageParams(pageInfo);
			model.put("showProperty", showProperty);

			model.put("pageInfo", pageInfo);
			model.put("consumeTime", (consumeTime / 1000L) + "." + (consumeTime % 1000L));
			model.put("timespan", request.getParameter("timespan"));
			model.put("queryForm", queryForm);

			searchCondition = searchCondition.replaceAll("\\\\", "\\\\\\\\");
			model.put("searchCondition", searchCondition);
		}

		return new ModelAndView(getSuccessView(), model);
	}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值