`
zl198751
  • 浏览: 278741 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Lucene 基本用法. 还可以sort,delete,update,Paoding.

阅读更多
import java.io.IOException;
import java.util.Arrays;

import net.paoding.analysis.analyzer.PaodingAnalyzer;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.TermPositionVector;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.Searcher;
import org.apache.lucene.search.highlight.TokenSources;
import org.apache.lucene.store.LockObtainFailedException;


public class test {
public static void main(String[] args) throws CorruptIndexException, LockObtainFailedException, IOException, ParseException {
     String IDNEX_PATH = "c:/temp/pao";

   //获取Paoding中文分词器

   Analyzer analyzer = new PaodingAnalyzer();

   //建立索引

   IndexWriter writer = new IndexWriter(IDNEX_PATH, analyzer, true);

   Document doc = new Document();
   Field field = new Field("content", "你好,世界!维护世界和平", Field.Store.YES,

       Field.Index.TOKENIZED, Field.TermVector.WITH_POSITIONS_OFFSETS);

   Field field2 = new Field("content2", "我要毁灭世界", Field.Store.YES,

           Field.Index.TOKENIZED); 
   doc.add(field);
   doc.add(field2);
 
   Document doc2 = new Document();
   Field field3 = new Field("content", "我要得到世界上最好的蛋糕", Field.Store.YES,

           Field.Index.TOKENIZED);
   Field field4 = new Field("content2", "蛋糕我最喜欢吃的", Field.Store.YES,

           Field.Index.TOKENIZED);
   doc2.add(field3);
   doc2.add(field4);
 
   writer.addDocument(doc);
   writer.addDocument(doc2);
 
   writer.close();

   System.out.println("Indexed success!");

  

   //检索

   IndexReader reader = IndexReader.open(IDNEX_PATH);

   QueryParser parser = new QueryParser("content2", analyzer);

   Query query = parser.parse("我要毁灭世界");

   Searcher searcher = new IndexSearcher(reader);

//   String key[] = {"世界" , "我要"};
//   String searchField[] = {"content", "content"};
//   BooleanClause.Occur[] flags = {BooleanClause.Occur.MUST, BooleanClause.Occur.MUST_NOT};
//   Query multiQuery = MultiFieldQueryParser.parse(key, searchField, flags, analyzer);
 
   Hits hits = searcher.search(query);

   if (hits.length() == 0) {

       System.out.println("hits.length=0");

   }


  for(int i = 0, j =hits.length();i < j;i++){
      Document readDoc = hits.doc(i);

      //高亮处理
      String text = readDoc.get("content2");
      String t2[] = readDoc.getValues("content");
    
      System.out.println(text);
    
      System.out.println(Arrays.toString(t2));
      TermPositionVector tpv = (TermPositionVector) reader.getTermFreqVector(i, "content");
      TokenStream ts = TokenSources.getTokenStream(tpv);
      System.out.println(ts);
  }



 
 
 
 
//   TermPositionVector tpv = (TermPositionVector) reader.getTermFreqVector(0, "content");
//
//   TokenStream ts = TokenSources.getTokenStream(tpv);
//
//   Formatter formatter = new Formatter() {
//
//       public String highlightTerm(String srcText, TokenGroup g) {
//
//           if (g.getTotalScore() <= 0) {
//
//               return srcText;
//
//           }
//
//           return "<b>" + srcText + "</b>";
//
//       }
//
//   };
//
//   Highlighter highlighter = new Highlighter(formatter, new QueryScorer(
//
//           query));
//
//   String result = highlighter.getBestFragments(ts, text, 5, "…");
//
//   System.out.println("result:\n\t" + result);

   reader.close();

}
}
分享到:
评论

相关推荐

    与lucene3.0兼容的庖丁jar包

    在使用lucene3与paoding集成的时候可能会出现以下错误: Exception in thread "main" java.lang.AbstractMethodError: org.apache.lucene.analysis.TokenStream.incrementToken()Z at org.apache.lucene.index....

    Lucene.Net.Analysis.Cn.dll

    例如,为了提高搜索速度,可以使用MultiFieldQueryParser进行多字段查询,或者使用Filter来限制搜索范围。同时,通过设置缓存和使用NRT(Near Real Time)模式,可以实现近乎实时的搜索体验。 总结来说,Lucene.Net...

    paoding_analysis.rar_PaodingAnalysis_lucene paoding_paodi

    文件名中的"lucene paoding paodi"标签,暗示了这是关于Lucene使用Paoding分词器进行中文索引的示例或者库文件。开发者可以解压这个文件,参考其中的代码示例,学习如何在自己的项目中集成并使用PaodingAnalysis。 ...

    lucene-analysis.jar

    除了预定义的分析器,"lucene-analysis.jar"还提供了自定义分析器的基础框架。开发者可以根据具体需求,组合使用Tokenizers(分词器)、TokenFilters(过滤器)和CharFilters(字符过滤器)来构建个性化的分析流程。...

    lucene-highlighter.jar

    lucene-highlighter.jar lucene-highlighter.jar

    Lucene学习源码.rar

    源码学习可以帮助我们理解Lucene的工作原理,提升对搜索引擎的理解和使用能力。以下是一些关键类的学习要点: 1. `org.apache.lucene.index.IndexWriter`:负责索引的创建和更新,是与索引交互的主要接口。 2. `org...

    vb.net2.0_Lucene_test.rar_lucene_lucene vb.n_lucene.net vb

    标题中的“vb.net2.0_Lucene_test.rar_lucene_lucene vb.n_lucene.net vb”表明这是一个关于使用VB.NET 2.0版本实现Lucene搜索引擎的测试项目。Lucene是一个高性能、全文本搜索库,广泛应用于Java开发,而这里则是将...

    apache-lucene-analyzers.jar

    使用"apache-lucene-analyzers.jar"时,开发者需要根据实际应用的需要选择合适的分析器,以确保文本能够被正确地索引和搜索。在Java程序中,可以通过导入相关的类并实例化分析器来实现这一功能。 总的来说,"apache...

    lucene-queries-2.9.0.jar 内含有org.apache.lucene.search.DuplicateFilter

    lucene-queries-2.9.0.jar 内含有org.apache.lucene.search.DuplicateFilter

    lucene3.0-highlighter.jar

    lucene3.0-highlighter.jar lucene3.0的高亮jar包,从lucene3.0源码中导出来的

    最新版linux lucene-8.10.0.tgz

    Linux Lucene 8.10.0是Apache Lucene项目的一个关键版本,它是一个高性能、全功能的文本搜索库,广泛应用于Java开发中。Lucene提供了丰富的搜索功能,包括全文检索、高级分析器、索引优化等,为开发者构建复杂的搜索...

    lucene基本包

    这个“lucene基本包”包含了Lucene的核心组件,是理解和使用Lucene进行信息检索的基础。 1. **全文检索引擎架构** Lucene的核心理念是建立索引,以便快速查找文档中的信息。它通过将文本数据转换成便于搜索的结构...

    最新版linux lucene-8.8.2.tgz

    最新版linux lucene-8.8.2.tgz最新版linux lucene-8.8.2.tgz最新版linux lucene-8.8.2.tgz

    lucene.net.analysis.cn

    《Lucene.Net中文分词详解》 在信息技术领域,搜索引擎的构建是不可或缺的一部分,而Lucene.NET作为一款高性能、全文检索引擎库,为开发者提供了强大的文本检索能力。在这个专题中,我们将聚焦于“lucene.net....

    Lucene使用

    Lucene采用3.03版,太新版和 ik paoding不兼容。 ----------------------------------------- 极易分词只支持1.9-2.4版,未测试 IKAnalyzer分词 2012版不支持,采用3.2.8版 在使用2012版时异常:...

    lucene org.apache

    org.apache.lucene.analysis.cjk.CJKAnalyzer .......

    lucene_cn.jar

    “META-INF”目录则包含了Lucene的相关元数据,如MANIFEST.MF文件,它记录了jar包的基本信息和依赖关系,这对于构建和运行环境的配置至关重要。在部署和运行Lucene_CN.jar时,这些元数据会帮助系统正确地加载和执行...

    lucene-2.9.2.jar包+源码

    首先,让我们了解一下Lucene的基本架构。Lucene的核心组件包括索引和查询。索引是将文档内容转化为便于搜索的结构,而查询则是根据用户输入的关键词查找匹配的文档。在Lucene-2.9.2中,索引过程涉及文档分析、字段...

    lucene-3.0.2.zip

    lucene-3.0.2.zip lucene-3.0.2.zip

Global site tag (gtag.js) - Google Analytics