2.代码使用场合:在搜索引擎检索索引目录的中的信息
/**
* 检索索引文件内容中是否包含查询的字词信息
* @param indexDir 索引的目录
* @param search 查询字词信息
* @throws Exception
*/
@SuppressWarnings("deprecation")
public static void search(File indexDir,String search) throws Exception
{
//创建索引存储的位置的
Directory fsDir=FSDirectory.getDirectory(indexDir,true);
//创建用于搜索IndexWriter类所创建的索引
IndexSearcher is=new IndexSearcher(fsDir);
//创建标准分析器对象的
Analyzer analyzer= new StandardAnalyzer();
//创建一个查询解析器的应用开发
QueryParser queryparser=new QueryParser(search,analyzer);
//创建一个查询对象的
Query query=queryparser.parse(search);
//创建一个查询单元的信息
//Term term=new Term("contents",search);
// Query query=new TermQuery(term);
long start=new Date().getTime();
// 存放有序索引结果的指针的简单容器,代表匹配已知查询的一系列文档的检索结果
Hits hits=is.search(query);
long end=new Date().getTime();
System.out.println((end-start));
for (int i = 0; i < hits.length(); i++) {
//检索匹配的文档对象
Document doc=hits.doc(i);
System.out.println("content:"+doc.get("contents"));
System.out.println(" "+doc.get("filename"));
}
}
}
3. 使用场合:查询一个词语的一系列同义词的,一种一般做法从数据库中查询给定词语的所有同义词
方法一:并将它添加到一个字符串中去,然后可以通过这个字符串创建一个Luence域对象。
方法二:它仅仅同时给一个相同的域赋予多个不同的值。Luence将自动将相同键的域的值合并成一个单词对它们进行检索。
/**
* 可追加的域对象的应用
* @param args
* @throws IOException
*/
public void thesaurus(IndexWriter writer) throws IOException {
String baseword="quick";
String[] synonyms={"quick","rapid","speedy"};
Document doc=new Document();
doc.add(Field.Text("word",baseword));
for (String value : synonyms) {
doc.add(Field.Keyword("word",value));
}
writer.addDocument(doc);
}