免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1496 | 回复: 0
打印 上一主题 下一主题

Lucene学习 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-03-11 13:52 |只看该作者 |倒序浏览

      因为工作的缘故,所以需要找一个能进行全文索引查询的工具。本来公司买了龙卷风的产品,这是另外一个同事的工作。我挺感兴趣的,在网上就找类似的资料熟悉一下,结果发现了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
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP