📄 ruse.java
字号:
package main;
import invertedList.FileRecord;
import invertedList.IFileManagement;
import invertedList.IQueryResult;
import invertedList.InvertedListManager;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import queries.IQueryManagement;
import queries.QueryManager;
/**
* @author Administrator
* a facade to the system. making the system easy to use.
* only provide several common methods.
*/
public class RUSE {
/**
* a instance of a invertedListManager
*/
private IFileManagement fileManager;
/**
* a instance to create query
*/
private IQueryManagement queryManager;
public RUSE(){
fileManager = InvertedListManager.getInstance();
queryManager = new QueryManager();
}
/**
* @param dataDir
* @param indexDir
* index the files in the datadir, and save the index files to indexDir
*/
public void indexFile(File dataDir,File indexDir){
if(!dataDir.exists()){
System.out.println("Data directory is not exist. Please check...");
return;
}
if(dataDir.isDirectory()){
fileManager.addFiles(dataDir.listFiles());
fileManager.saveIndexFile(indexDir);//currently written in this style
}
else{
fileManager.addFile(dataDir);
}
}
/**
* @param filenames
* @param indexDir
* index several files using indexFile method
*/
public void indexFile(File[] filenames,File indexDir){
for(int i = 0;i < filenames.length;i++){
indexFile(filenames[i],indexDir);
}
fileManager.saveIndexFile(indexDir);
}
/**
* @param str
* @return
* get the result of a query string
*/
public List<FileRecord> getResult(String str){
return new ArrayList<FileRecord>(queryManager.createQuery(str).doQuery((IQueryResult)fileManager));
}
/**
* @param str
* @return
*/
public List<FileRecord> getResultBySize(String str){
List<FileRecord> result = new ArrayList<FileRecord>(queryManager.createQuery(str).doQuery((IQueryResult)fileManager));
Collections.sort(result, new SizeComparator());
return result;
}
/**
* @param str
* @return
*/
public List<FileRecord> getResultByTime(String str){
List<FileRecord> result = new ArrayList<FileRecord>(queryManager.createQuery(str).doQuery((IQueryResult)fileManager));
Collections.sort(result, new ModTimeComparator());
return result;
}
/**
* @param indexDir
* load the index from the indexDir
*/
public void loadIndexFile(File indexDir){
fileManager.loadIndexFile(indexDir,false);
}
/**
* @param str
* @param num
* @return
* num is the number of results that you want a time.
*/
public Iterator<List<FileRecord>> getResultsIncrementally(String str,int num){
List<FileRecord> result = new ArrayList<FileRecord>(queryManager.createQuery(str).doQuery((IQueryResult)fileManager));
return SearchResultSet.createIterator(result, num);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -