亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? searchquery.java

?? java servlet著名論壇源代碼
?? JAVA
字號:
/*
 * $Header: /cvsroot/mvnforum/mvnforum/src/com/mvnforum/search/SearchQuery.java,v 1.3 2004/03/10 10:32:22 minhnn Exp $
 * $Author: minhnn $
 * $Revision: 1.3 $
 * $Date: 2004/03/10 10:32:22 $
 *
 * ====================================================================
 *
 * Copyright (C) 2002-2004 by MyVietnam.net
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or any later version.
 *
 * All copyright notices regarding mvnForum MUST remain intact
 * in the scripts and in the outputted HTML.
 * The "powered by" text/logo with a link back to
 * http://www.mvnForum.com and http://www.MyVietnam.net in the
 * footer of the pages MUST remain visible when the pages
 * are viewed on the internet or intranet.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 *
 * Support can be obtained from support forums at:
 * http://www.mvnForum.com/mvnforum/index
 *
 * Correspondence and Marketing Questions can be sent to:
 * info@MyVietnam.net
 *
 * @author: Minh Nguyen  minhnn@MyVietnam.net
 * @author: Dejan Krsmanovic dejan_krsmanovic@yahoo.com
 */
package com.mvnforum.search;

import java.io.IOException;
import java.sql.Timestamp;
import java.util.*;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.Term;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.*;
import com.mvnforum.MVNForumConfig;
import com.mvnforum.db.*;
import net.myvietnam.mvncore.exception.DatabaseException;
import net.myvietnam.mvncore.exception.ObjectNotFoundException;

/**
 * This class is used for specifying query that should be searched for. Query
 * can contain keywords and further it can be filtered by specifying member
 * name of the author, forumID as well as date interval for searching.
 *
 * searchString contains one or more keywords. Each keyword can use wildcards.
 * ? for single character and * for multiple characters.
 * For specifying boolean operators AND and OR operators can be used.....
 *
 * For all available options consult Lucene documentation http://jakarta.apache.org/lucene
 *
 * @author Dejan Krsmanovic dejan_krsmanovic@yahoo.com
 */
public class SearchQuery
{
    private static Log log = LogFactory.getLog(SearchQuery.class);

    private int memberID = -1;
    private int forumId = 0;
    private String searchString = null;
    private Timestamp fromDate = null;
    private Timestamp toDate = null;

    private String searchIndexDir = null;
    private int hitCount = 0;
    private Collection searchResult = null;

    public SearchQuery() {
        searchIndexDir = MVNForumConfig.getSearchIndexDir();
    }

    /**
     * Set name of the author that should be searched for
     * @param memberId
     */
    public void setMemberId(int memberId) {
        this.memberID = memberId;
    }

    /**
     * Id of forum where post belongs. Set to -1 if all forums should be searched
     * @param forumId
     */
    public void setForumId(int forumId) {
        this.forumId = forumId;
    }

    /**
     * Set string that should be searched for.
     * @param searchString
     */
    public void setSearchString(String searchString) {
        this.searchString = searchString;
    }

    public void setFromDate(Timestamp fromDate) {
        this.fromDate = fromDate;
    }

    public void setToDate(Timestamp toDate) {
        this.toDate = toDate;
    }

    protected IndexSearcher getSearcher() throws IOException {
        try {
            IndexSearcher searcher = new IndexSearcher(searchIndexDir);
            return searcher;
        } catch (IOException ex) {
            // we throw new IOException because the original exception
            // contain sensitive directory information
            log.error("Cannot access the lucene search index for query. Please check if you have configed mvnForumHome properly. You can also go to Admin Zone to rebuild the Lucene index files.", ex);
            throw new IOException("Cannot access the lucene search index. Please report this error to web site Administrator (check mvnForumHome or rebuild Lucene index).");
        }
    }

    public void searchDocuments(int offset, int rowsToReturn)
        throws IOException, DatabaseException, ObjectNotFoundException {
        //Build the query
        if (searchString == null || searchString.equals("")) {
            if (memberID == -1) {
                return;
            }
        }
        Analyzer analyzer = PostIndexer.getAnalyzer();
        BooleanQuery query = new BooleanQuery();
        try {
            Query topicBodyQuery = getTopicBodyQuery();
            if (topicBodyQuery != null) {
                query.add(topicBodyQuery, true, false);
                log.debug("topicBodyQuery = " + topicBodyQuery);
            }

            Query categoryForumQuery = getCategoryForumQuery();
            if (categoryForumQuery != null) {
                log.debug("categoryForumQuery = " + categoryForumQuery);
                query.add(categoryForumQuery, true, false);
            }

            Query memberQuery = getMemberQuery();
            if (memberQuery != null) {
                log.debug("memberQuery = " + memberQuery);
                query.add(memberQuery, true, false);
            }
        } catch (ParseException pe) {
            log.error("Cannot parse the search query", pe);
        }
        log.debug("booleanQuery = " + query);

        DateFilter dateFilter = null;
        //Add date filter if some of dates provided
        if (fromDate != null && toDate != null) {
            dateFilter = new DateFilter(PostIndexer.FIELD_POST_DATE, fromDate, toDate);
        } else if (fromDate != null) {
            dateFilter = DateFilter.After(PostIndexer.FIELD_POST_DATE, fromDate);
        } else if (toDate != null) {
            dateFilter = DateFilter.Before(PostIndexer.FIELD_POST_DATE, toDate);
        }

        //Now search the documents
        IndexSearcher searcher = null;
        try {
            searcher = getSearcher();

            //If dateFilter set then use it
            Hits postHits = null;
            if (dateFilter != null) {
                postHits = searcher.search(query, dateFilter);
            } else {
                postHits = searcher.search(query);
            }
            hitCount = postHits.length();
            searchResult = getPosts(postHits, offset, rowsToReturn);
        } catch (IOException ex) {
            throw ex;
        } finally {
            try {
                if (searcher != null) {
                    searcher.close();
                }
            } catch (Exception ex) {}
        }
    }

    public int getHitCount() {
        return hitCount;
    }

    public Collection getPostResult() {
        return searchResult;
    }

    private Collection getPosts(Hits postHits, int offset, int rowsToReturn)
        throws IOException, ObjectNotFoundException, DatabaseException {

        if (offset < 0) throw new IllegalArgumentException("The offset < 0 is not allowed.");
        if (rowsToReturn <= 0) throw new IllegalArgumentException("The rowsToReturn <= 0 is not allowed.");

        int hitCount = getHitCount();
        ArrayList retValue = new ArrayList(hitCount);

        for (int i = offset; (i < offset + rowsToReturn) && (i < hitCount); i++) {
            Document postDocument = postHits.doc(i);
            int postID = Integer.parseInt(postDocument.get(PostIndexer.FIELD_POST_ID));
            PostBean postBean = DAOFactory.getPostDAO().getPost(postID);
            retValue.add(postBean);
        }
        return retValue;
    }

    private Query getTopicBodyQuery() throws ParseException {
        if (searchString == null || searchString.equals("")) {
            return null;
        }
        Analyzer analyzer = PostIndexer.getAnalyzer();
        BooleanQuery topicBodyQuery = new BooleanQuery();

        //add topic query
        Query topicQuery = QueryParser.parse(searchString,
                                             PostIndexer.FIELD_POST_TOPIC,
                                             analyzer);
        topicBodyQuery.add(topicQuery, false, false);

        //add body query
        Query bodyQuery = QueryParser.parse(searchString,
                                            PostIndexer.FIELD_POST_BODY,
                                            analyzer);
        topicBodyQuery.add(bodyQuery, false, false);

        return topicBodyQuery;
    }

    private Query getMemberQuery() throws ParseException {
        Query memberQuery = null;
        if (memberID > 0) {
            Term memberTerm = new Term(PostIndexer.FIELD_MEMBER_ID, String.valueOf(memberID));
            memberQuery = new TermQuery(memberTerm);
        }
        return memberQuery;
    }

    private Query getCategoryForumQuery() throws ParseException, DatabaseException {
        BooleanQuery categoryForumQuery = new BooleanQuery();
        if (forumId == 0) {
            // search all forum
            return null;
        } else if (forumId > 0) {
            // search in forum
            Term forumTerm = new Term(PostIndexer.FIELD_FORUM_ID, String.valueOf(forumId));
            Query forumQuery = new TermQuery(forumTerm);
            categoryForumQuery.add(forumQuery, true, false);
        } else if (forumId < 0) {
            // search in category
            int categoryID = -forumId;
            ForumCache forumCache = ForumCache.getInstance();
            Collection forumBeans = forumCache.getBeans();
            for (Iterator iter = forumBeans.iterator(); iter.hasNext(); ) {
                ForumBean forumBean = (ForumBean)iter.next();
                if (forumBean.getCategoryID() == categoryID) {
                    int currentForumID = forumBean.getForumID();
                    Term forumTerm = new Term(PostIndexer.FIELD_FORUM_ID, String.valueOf(currentForumID));
                    Query forumQuery = new TermQuery(forumTerm);
                    categoryForumQuery.add(forumQuery, false, false);
                }
            }
        }
        return categoryForumQuery;
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合综合久久综合| 麻豆91在线播放免费| 亚洲午夜激情av| 洋洋成人永久网站入口| 婷婷六月综合亚洲| 国产一区999| 欧美肥妇bbw| 国产三级精品三级在线专区| 国产精品久久久久久一区二区三区| 国产精品久久毛片| 日本成人在线网站| 91原创在线视频| 精品理论电影在线观看| 国产精品麻豆欧美日韩ww| 日本欧美在线观看| 成人性视频免费网站| 欧美三区在线观看| 欧美极品少妇xxxxⅹ高跟鞋| 午夜精品久久久久久久99樱桃| 国产成人自拍网| 日韩精品中文字幕一区二区三区 | 国产女人水真多18毛片18精品视频| 国产精品伦理在线| 国产精品一区二区不卡| 欧美三级日本三级少妇99| 中文字幕第一区综合| 精品一区中文字幕| 欧美一级片在线| 五月天丁香久久| 欧美人狂配大交3d怪物一区| 自拍偷拍欧美精品| 91麻豆国产在线观看| 亚洲女同一区二区| 在线视频你懂得一区| 亚洲在线中文字幕| 91精品国产综合久久久久久| 一区二区三区欧美日韩| 欧美影视一区在线| 三级在线观看一区二区| 欧美日韩中文国产| 麻豆国产精品一区二区三区 | 日韩av电影免费观看高清完整版在线观看| 国产成人福利片| 国产精品拍天天在线| 91视视频在线观看入口直接观看www | 国产毛片精品国产一区二区三区| 精品久久久久久久人人人人传媒| 精品一区二区免费| 成人欧美一区二区三区白人| 91香蕉国产在线观看软件| 一区二区三区 在线观看视频| 欧美精品久久久久久久多人混战 | 日韩欧美一区在线观看| 国产成人精品影院| 亚洲午夜电影在线观看| 欧美精品一区二区三区在线播放| 91在线国内视频| 久久成人18免费观看| 亚洲激情自拍偷拍| 中文字幕不卡在线| 欧美日韩夫妻久久| 99精品久久99久久久久| 狠狠色丁香九九婷婷综合五月| 国产精品久久网站| 精品999久久久| 欧美大片在线观看| 欧美在线观看一区| 久久99热国产| 日韩亚洲欧美在线| 91麻豆国产在线观看| 成人黄色av电影| 国产91清纯白嫩初高中在线观看 | 欧美在线观看一二区| av在线一区二区| av高清久久久| 国产成人免费在线观看不卡| 国产在线不卡一卡二卡三卡四卡| 日韩电影在线一区二区三区| 亚洲图片欧美色图| 日本一区二区三区视频视频| 国产成人无遮挡在线视频| 精品国产免费久久| 日韩欧美国产综合| 欧美电影在哪看比较好| 欧美综合在线视频| 欧美亚洲另类激情小说| 欧美中文字幕一区二区三区亚洲| 91丨porny丨户外露出| 91蜜桃免费观看视频| 成人黄色777网| 欧美日韩一区二区欧美激情| 在线观看91视频| 日韩欧美国产三级电影视频| 日韩欧美在线影院| 综合激情成人伊人| 五月婷婷欧美视频| 亚洲va欧美va国产va天堂影院| 欧美亚洲免费在线一区| 欧美欧美欧美欧美| 91浏览器打开| 欧美一区二区在线免费观看| 日韩视频在线一区二区| 久久九九久久九九| 一区二区三国产精华液| 国产综合久久久久影院| 色婷婷国产精品久久包臀| 欧美一区三区二区| 亚洲私人黄色宅男| 亚洲制服丝袜在线| 高清成人免费视频| 欧美电影免费观看高清完整版在线观看| 26uuu精品一区二区| 一区二区三区不卡视频| 国产精品66部| 欧美成人性福生活免费看| 亚洲电影你懂得| 在线观看中文字幕不卡| 日韩美女久久久| 国产suv精品一区二区三区| 日韩三级免费观看| 男女性色大片免费观看一区二区 | 欧美日韩一区二区三区免费看| 国产精品久久久久婷婷二区次| 看电影不卡的网站| 日韩一卡二卡三卡四卡| 日韩精品福利网| 欧美一区二区在线免费观看| 青青草原综合久久大伊人精品优势| 久久国内精品视频| 成人免费视频caoporn| 日本一区二区久久| av网站一区二区三区| 亚洲少妇屁股交4| 欧美三片在线视频观看| 免费的国产精品| 久久久久久亚洲综合影院红桃| 精品中文字幕一区二区| 国产午夜精品一区二区 | 日韩欧美国产三级电影视频| 国产专区综合网| 中文一区在线播放| 日本道在线观看一区二区| 香蕉久久一区二区不卡无毒影院| 欧美日韩久久不卡| 国产白丝网站精品污在线入口| 欧美在线视频你懂得| 国产精品久久久久久久久动漫| 日本精品视频一区二区三区| 国产精品视频第一区| 欧美精品高清视频| 色网站国产精品| 国精品**一区二区三区在线蜜桃| 国产精品久久久久影院老司| 91精品国产色综合久久不卡蜜臀| 国产91精品精华液一区二区三区| 亚洲国产精品自拍| 中文一区在线播放| 精品久久五月天| 欧美一区二区三区日韩视频| 一本在线高清不卡dvd| 国产一区二区三区在线观看精品| 亚洲午夜在线观看视频在线| 欧美激情一区二区三区蜜桃视频| 91麻豆精品国产自产在线观看一区| 91麻豆精品国产91久久久久久| 成人动漫中文字幕| 国产在线一区二区综合免费视频| 性做久久久久久久久| 亚洲日本欧美天堂| 中文字幕综合网| 亚洲日本在线看| 一区二区三区四区视频精品免费 | 久久9热精品视频| 精品一区二区在线视频| 秋霞国产午夜精品免费视频| 性久久久久久久久| 日日夜夜精品视频免费| 蜜桃久久久久久| 日韩中文字幕av电影| 国产麻豆91精品| 国产+成+人+亚洲欧洲自线| yourporn久久国产精品| 美女一区二区三区在线观看| 亚洲伦在线观看| 久久综合丝袜日本网| 亚洲国产成人私人影院tom | 国产日韩欧美精品一区| 国产精品传媒在线| 亚洲高清视频在线| 经典三级视频一区| 91伊人久久大香线蕉| 精品视频一区三区九区| 日韩一级免费观看| 欧美国产禁国产网站cc| 亚洲国产欧美在线| 成人影视亚洲图片在线| 欧美人妇做爰xxxⅹ性高电影| 精品伦理精品一区| 午夜精品久久久久| 99re这里只有精品6|