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

📄 operator_modtime.java

📁 java实现的全文搜索引擎
💻 JAVA
字号:
/**
 * 
 */
package cn.edu.nju.software.ruse;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author spring
 * 
 */
public class Operator_ModTime extends Operator {

	/*
	 * (non-Javadoc)
	 * 
	 * @see cn.edu.nju.software.ruse.Operator#getPRI()
	 */

	public Operator_ModTime() {
		desription = "MODTIME";
		PRI = PRI_MODTIME;
	}

	public int getPRI() {
		return PRI;
	}

	public HashSet<File> getFileSet(String expre, Index index) {
		//System.err.println("@Operator_ModTime Starting to getFileSet from the index!");
		expre = expre.trim();
		HashMap<String, HashSet<File>> modTimeIndex = index.getModTimeIndex();
		if (expre.charAt(0) != '[' && expre.charAt(0) != '{') {
			/**
			 * case1: modTime: 20081111111111
			 */
			if(modTimeIndex.containsKey(expre)) {
				return modTimeIndex.get(expre);
			} else {
				return new HashSet<File>();
			}
		} else {
			/**
			 * case2: modTime:[] OR modTime:{} OR modTime:[} OR modTime:{]
			 */
			Pattern p = Pattern.compile("\\d+");
			Matcher m = p.matcher(expre);
			ArrayList<String> date = new ArrayList<String>();
			HashSet<File> temp = new HashSet<File>();

			int i = -1;
			while (m.find()) {
				i++;
				date.add(i, m.group());
			}

			/**
			 * case2.1: modTime:[A]
			 */
			if (date.size() == 1) {
				String s = date.get(0);
				if(modTimeIndex.containsKey(s)) {
					return modTimeIndex.get(s);
				} else {
					return new HashSet<File>();
				}
			} else {
				if (expre.charAt(0) == '['
						&& expre.charAt(expre.length() - 1) == ']') {
					Iterator<String> it = modTimeIndex.keySet().iterator();
					while (it.hasNext()) {
						String dateFromIndex = it.next();
						if (dateFromIndex.compareTo(date.get(0)) >= 0
								&& dateFromIndex.compareTo(date.get(1)) <= 0) {
							temp.addAll(modTimeIndex.get(dateFromIndex));
						}
					}
					return temp;
				}
				if (expre.charAt(0) == '{'
						&& expre.charAt(expre.length() - 1) == ']') {
					Iterator<String> it = modTimeIndex.keySet().iterator();
					while (it.hasNext()) {
						String dateFromIndex = it.next();
						if (dateFromIndex.compareTo(date.get(0)) > 0
								&& dateFromIndex.compareTo(date.get(1)) <= 0) {
							temp.addAll(modTimeIndex.get(dateFromIndex));
						}
					}
					return temp;
				}
				if (expre.charAt(0) == '['
						&& expre.charAt(expre.length() - 1) == '}') {
					Iterator<String> it = modTimeIndex.keySet().iterator();
					while (it.hasNext()) {
						String dateFromIndex = it.next();
						if (dateFromIndex.compareTo(date.get(0)) >= 0
								&& dateFromIndex.compareTo(date.get(1)) < 0) {
							temp.addAll(modTimeIndex.get(dateFromIndex));
						}
					}
					return temp;
				} else {
					Iterator<String> it = modTimeIndex.keySet().iterator();
					while (it.hasNext()) {
						String dateFromIndex = it.next();
						if (dateFromIndex.compareTo(date.get(0)) > 0
								&& dateFromIndex.compareTo(date.get(1)) < 0) {
							temp.addAll(modTimeIndex.get(dateFromIndex));
						}
					}
					return temp;
				}
			}
		}
	}
}

⌨️ 快捷键说明

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