- 论坛徽章:
- 0
|
因为工作的缘故,所以需要找一个能进行全文索引查询的工具。本来公司买了龙卷风的产品,这是另外一个同事的工作。我挺感兴趣的,在网上就找类似的资料熟悉一下,结果发现了Lucene这个免费的开发包,然后就下了1.4版的。
为了尽快熟悉,所以做了几个小例子。
/**
*目的:测试Lucene的Index接口
*日期:2005.02.23
*作者:Yanlw
*/
import java.io.File;
import java.io.Reader;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.FileInputStream;
import org.apache.lucene.index.*;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.DateField;
import org.apache.lucene.analysis.*;
import org.apache.lucene.analysis.standard.*;
public class TestIndex1
{
private IndexWriter indexWriter=null;
public static void main(String[] args)
{
try{
String usage="Usage:java TestIndex1 [-index indexpath] ";
TestIndex1 tindex=null;//生成空的测试类对象
/**
*判断参数的合法性,并根据参数开关执行不同的操作
*/
if (args.length==0){
System.out.println(usage);
return ;
}
if (args[0].equals("-index")){
if (args.length] ";
String indexpath="index";
String searchContent="";
//处理参数
if (args.length==0)
{
System.out.println(usage);
return;
}
if (args[0].equals("-index"))
{
if (args.length==3)
{
indexpath=args[1];
searchContent=args[2];
}
else
{
System.out.println(usage);
return;
}
}
else
{
searchContent=args[0];
}
try{
Analyzer analyzer=new StandardAnalyzer();
Searcher searcher=new IndexSearcher(indexpath);
Query query=QueryParser.parse(searchContent,"names",analyzer);
System.out.println("Searching for "+query.toString("names"));
Hits hits=searcher.search(query);
System.out.println("Find "+hits.length()+" results");
final int displayLength=10;
int totalLength=hits.length();
for (int start=0;start<totalLength;start+=displayLength)
{
int end=Math.min(totalLength,start +displayLength);
for (int i=start;i<end;i++)
{
System.out.println("Result "+i+":"+hits.doc(i).get("path"));
}
if (end<totalLength)
{
System.out.print("more:(y/n)");
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
String temp=in.readLine();
if (temp.length()==0 || temp.charAt(0)=='N' || temp.charAt(0)=='n')
{
break;
}
}
}
searcher.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
用它实际进行索引一个目录,速度还可以,为了测试对中文的支持,我在目录中放入了一些中文名称和内容的资料,觉得它对中文的支持还是很不错的,虽然我是用里面的StandardAnalyzer来做的,但基本上都可以查询出来,挺爽的.再熟悉一段时间,写一个自己的Analyzer就更好了
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/3961/showart_15086.html |
|