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

📄 searchserviceimpl.java

📁 一个搜索引擎,希望对大家有用
💻 JAVA
字号:
package com.luceneheritrixbook.searchengine.service.impl;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;

import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.search.WildcardQuery;

import com.luceneheritrixbook.searchengine.bo.SearchRequest;
import com.luceneheritrixbook.searchengine.bo.SearchResult;
import com.luceneheritrixbook.searchengine.bo.SearchResults;
import com.luceneheritrixbook.searchengine.config.PropertyConfiguration;
import com.luceneheritrixbook.searchengine.service.SearchService;
import com.luceneheritrixbook.searchengine.service.dao.SearchResultDao;

public class SearchServiceImpl implements SearchService {

	private static final String PRODUCT_ID = "productid";

	private static final String INDEX_TIME = "indextime";

	private static final String PRODUCT_URL = "producturl";

	private static final String CATEGORY = "category";

	private static final String PRODUCT_NAME = "name";

	private static final String PRODUCT_TYPE = "type";

	private static final String SUMMARY = "summary";

	private static final String INDEX_STORE_PATH = PropertyConfiguration.getIndexStorePath();

	private SearchResultDao searchResultDao;

	/**
	 * 
	 */
	public SearchResults getSearchResults(SearchRequest request) {

		SearchResults results = new SearchResults();

		Query query = makeQuery(request.getQuery());

		ArrayList list = new ArrayList();

		try {
			IndexSearcher searcher = new IndexSearcher(INDEX_STORE_PATH);
			Hits hits = searcher.search(query);

			int length = hits.length();
			int startindex = request.getStartindex();
			int endindex;

			if (startindex > length)
			{
				// TODO should be impossible
			}
			else
			{
				endindex = startindex + 9;
				if (endindex >= length) {
					endindex = length;
				}

				for (int i = startindex; i <= endindex; i++) {
					Document doc = hits.doc(i-1);
					String id = doc.get("productid");
					list.add(id);
				}
			}

			results.setResults(list);
			
			int startpage;
			int endpage;
			
			if (startindex % 100 == 0) {
				startpage = (startindex / 100 - 1) * 10 + 1;
			}
			else {
				startpage = (startindex/100) * 10 + 1;
			}
			
			int span;
			int hasnext;
			
			float temp = ((float)(length - (startpage-1) * 10 ))/10;
			if (temp > 10 )
			{
				span = 9;
				hasnext = 1;
			}
			else if (temp == 10) {
				span = 9;
				hasnext = 0;
			}
			else {
				hasnext = 0;
				if ((int)temp < temp) {
					span = (int)temp;
				}
				else {
					span = (int)temp -1;
				}
				
			}
			endpage = startpage + span;
			
			results.setMinpage(startpage);
			results.setMaxpage(endpage);
			results.setHasnext(hasnext);
			results.setStartindex(startindex);

		} catch (Exception e) {
			e.printStackTrace();
		}

		return results;
	}

	/**
	 * 
	 */
	public SearchResult getSearchResultById(int id) {
		return searchResultDao.getSearchResultById(id);
	}

	/**
	 * 
	 * @return
	 */
	public SearchResultDao getSearchResultDao() {
		return searchResultDao;
	}

	/**
	 * 
	 * @param searchResultDao
	 */
	public void setSearchResultDao(SearchResultDao searchResultDao) {
		this.searchResultDao = searchResultDao;
	}

	private Query makeQuery(String query) {
		TermQuery qu = new TermQuery(new Term("all", query.toLowerCase()));
		return qu;
	}

	public static void main(String[] args) throws Exception {
		IndexSearcher searcher = new IndexSearcher(INDEX_STORE_PATH);

	}

}

⌨️ 快捷键说明

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