`
likunkun
  • 浏览: 91758 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Lucene-2.0学习文档(4)

阅读更多
接http://www.iteye.com/topic/39876
下面是搜索的例子:
[code]
public void SearchSort1() throws IOException, ParseException
{
        IndexSearcher indexSearcher = new IndexSearcher("C:\\indexStore");
        QueryParser queryParser = new QueryParser("sort",new StandardAnalyzer());
        Query query = queryParser.parse("4");
       
        Hits hits = indexSearcher.search(query);
        System.out.println("有"+hits.length()+"个结果");
        Document doc = hits.doc(0);
        System.out.println(doc.get("sort"));
}
public void SearchSort2() throws IOException, ParseException
{
        IndexSearcher indexSearcher = new IndexSearcher("C:\\indexStore");
        Query query = new RangeQuery(new Term("sort","1"),new Term("sort","9"),true);//这个地方前面没有提到,它是用于范围的Query可以看一下帮助文档.
        Hits hits = indexSearcher.search(query,new Sort(new SortField("sort",new MySortComparatorSource())));
        System.out.println("有"+hits.length()+"个结果");
        for(int i=0;i
        {
            Document doc = hits.doc(i);
            System.out.println(doc.get("sort"));
        }
}
public class MyScoreDocComparator implements ScoreDocComparator
{
    private Integer[]sort;
    public MyScoreDocComparator(String s,IndexReader reader, String fieldname) throws IOException
    {
        sort = new Integer[reader.maxDoc()];
        for(int i = 0;i
        {
            Document doc =reader.document(i);
            sort[i]=new Integer(doc.get("sort"));
        }
    }
    public int compare(ScoreDoc i, ScoreDoc j)
    {
        if(sort[i.doc]>sort[j.doc])
            return 1;
        if(sort[i.doc]<sort[j.doc])
            return -1;
        return 0;
    }
    public int sortType()
    {
        return SortField.INT;
    }
    public Comparable sortValue(ScoreDoc i)
    {
        // TODO 自动生成方法存根
        return new Integer(sort[i.doc]);
    }
}
public class MySortComparatorSource implements SortComparatorSource
{
    private static final long serialVersionUID = -9189690812107968361L;
    public ScoreDocComparator newComparator(IndexReader reader, String fieldname)
            throws IOException
    {
        if(fieldname.equals("sort"))
            return new MyScoreDocComparator("sort",reader,fieldname);
        return null;
    }
}[/code]
SearchSort1()输出的结果没有排序,SearchSort2()就排序了。
2.多域搜索MultiFieldQueryParser
如果想输入关键字而不想关心是在哪个Field里的就可以用MultiFieldQueryParser了
用它的构造函数即可后面的和一个Field一样。
MultiFieldQueryParser. parse(String[] queries, String[] fields, BooleanClause.Occur[] flags, Analyzer analyzer)                                          ~~~~~~~~~~~~~~~~~
第三个参数比较特殊这里也是与以前lucene1.4.3不一样的地方
看一个例子就知道了
String[] fields = {"filename", "contents", "description"};
 BooleanClause.Occur[] flags = {BooleanClause.Occur.SHOULD,
                BooleanClause.Occur.MUST,//在这个Field里必须出现的
                BooleanClause.Occur.MUST_NOT};//在这个Field里不能出现
 MultiFieldQueryParser.parse("query", fields, flags, analyzer);
 (未完)
分享到:
评论
4 楼 im9527 2007-08-29  
public void SearchSort2() throws IOException, ParseException
{
        IndexSearcher indexSearcher = new IndexSearcher("C:\\indexStore");
        Query query = new RangeQuery(new Term("sort","1"),new Term("sort","9"),true);//这个地方前面没有提到,它是用于范围的Query可以看一下帮助文档.
        Hits hits = indexSearcher.search(query,new Sort(new SortField("sort",new MySortComparatorSource())));
        System.out.println("有"+hits.length()+"个结果");
        for(int i=0;i
        {
            Document doc = hits.doc(i);
            System.out.println(doc.get("sort"));
        }
}

这个方法怎么不用分析器的?new StandardAnalyzer();
3 楼 夺天策 2007-04-29  
新手提个问题!!
怎么实现搜索返回页面的摘要,像google,baidu那样,是不是需要把文档正文都保存到index中。。具体怎么实现?谢谢
2 楼 ITeye管理员 2006-12-26  
根据仲裁委员会的意见,此贴取消良好,恢复楼主likunkun被加30分。

期待likunkun更多更好的帖子。

仲裁详情请见:

http://www.iteye.com/topic/40320
1 楼 galaxystar 2006-12-22  
java写搜索引擎,好多抄袭现有的设计,太委屈它了!
还是直接C++写的比较实际!

相关推荐

    Lucene-2.0学习文档

    本篇文章将围绕"Lucene-2.0学习文档"的主题,结合Indexer.java、MyScoreDocComparator.java和MySortComparatorSource.java这三个关键文件,深入探讨Lucene的核心概念和实际应用。 首先,我们来看`Indexer.java`。这...

    lucene-2.0

    4. **Lucene 2.0的特性** - 实时搜索:支持增量索引,新添加或更新的文档无需重建整个索引即可被搜索到。 - 多线程支持:允许多个线程同时进行索引和查询操作,提高性能。 - 多字段搜索:允许对文档的不同字段...

    lucene-2.0.CHM

    我自己根据lucene的html格式的帮助文档编译的chm

    Incubating-Apache-Lucene.Net-2.0-004-11Mar07.src.zip

    这个压缩包中的源码包含了Lucene.Net 2.0的完整开发源码,开发者可以通过阅读源码学习其内部实现,理解搜索引擎的工作原理,或者对源码进行修改和扩展,以适应特定的项目需求。由于这是一个较早的版本,可能不包含...

    Lucene.Net 2.0 源码+文档

    总的来说,"Lucene.Net 2.0 源码+文档"是学习和研究全文检索技术的宝贵资料,无论是对.NET开发人员还是对信息检索感兴趣的人员,都能从中获益匪浅。通过深入研究源码和文档,你可以掌握如何利用Lucene.Net构建高效...

    Incubating-Apache-Lucene.Net-2.0-004-11Mar07.bin.zip

    这个压缩包"Incubating-Apache-Lucene.Net-2.0-004-11Mar07.bin.zip"包含了Lucene.Net的2.0版本,发布于2007年3月11日,处于孵化器阶段。由于描述中提到“已编译,不含源代码”,这意味着提供的文件是编译后的二进制...

    Lucene.net 2.0 API + DLL 下载

    另外,`Lucene.Net-2.0.doc.zip`文件可能包含的是关于Lucene.NET 2.0的文档资料,可能包括API参考、用户指南、示例代码等,对于学习和掌握这个版本的API非常有帮助。通过阅读这些文档,开发者可以理解如何初始化搜索...

    【大搜集:lucene学习资料】---<下载不扣分,回帖加1分,欢迎下载,童叟无欺>

    基于Java的全文索引引擎.doc lucene测试代码.txt lucene为数据库搜索建立增量索引.txt lucene数据库索引.txt 新闻系统全文检索的思绪.txt ... 关于lucene2.0的创建、检索和删除功能的完整实现.doc weblucene.txt

    Lucene.Net-2.0.doc.zip

    **Lucene.Net 2.0 深度解析** Lucene.Net 是 Apache Lucene 的 .NET 实现,它是一个高性能、全文本搜索库,适用于 .NET 开发者。Lucene.Net 2.0 版本提供...这份 MSDN 操作文档将是学习和应用 Lucene.Net 的宝贵资源。

    lucene-core-2.9.2.jar

    4. 更新与优化:Lucene允许动态更新索引,即添加、删除或修改文档。此外,定期的索引优化(Merge)可以合并多个段,提高搜索效率。 三、lucene-1.4.3.jar.license.txt 这个文件通常包含了关于Apache Lucene早期...

    Lucene.Net2.0(C#)

    总结,Lucene.Net 2.0是.NET开发者实现全文检索的重要工具,它的源代码提供了丰富的学习材料,可以帮助开发者提升搜索功能的开发效率和质量。无论是在企业级应用还是个人项目中,熟悉并掌握Lucene.Net都能大大增强你...

    Lucene.net 2.0源码

    4. **评分机制**:Lucene 使用TF-IDF(词频-逆文档频率)算法来计算文档与查询的相关性,得分高的文档优先显示。此外,还可以通过自定义评分函数来优化搜索结果。 5. **更新与删除**:Lucene.NET 2.0 支持对已索引...

    重要lucene2.0 学习文档

    在 Lucene 2.0 版本中,相比于之前的 1.4.3 版本,有很多改进和优化,但同时也存在向后兼容性问题。2006 年 6 月 1 日发布的 Lucene 2.0,其下载地址是 http://apache.justdn.org/lucene/java/。 下面通过两个示例...

    lucene 2.0 api以及lucene 3.0 api

    同样,`lucene-2.0.CHM` 文件则提供了 Lucene 2.0 的 API 文档,尽管旧版本,但依然能为那些需要维护旧系统或对比学习的开发者提供参考。 总的来说,从 Lucene 2.0 进化到 3.0,主要变化在于性能提升、查询功能增强...

    Lucene.2.0.API

    这份API文档以CHM(Compiled Help Manual)格式呈现,便于开发者快速查阅和学习。 在Lucene 2.0中,主要的知识点包括以下几个核心模块: 1. **索引模块**:这是Lucene的基础,用于构建和管理全文索引。主要包括`...

    lucene2.0+Heritrix配套源码

    《lucene2.0+Heritrix配套源码》是一个针对搜索引擎开发的资源包,包含了构建自定义搜索引擎所需的关键组件。Lucene是一个流行的全文搜索引擎库,而Heritrix则是一个强大的网页抓取工具,用于收集互联网上的数据。这...

    lucene2.0与其分词工具包

    《Lucene 2.0及其分词工具包详解》 Lucene是一款由Apache软件基金会开发的全文搜索引擎库,专门用于信息检索。它以其强大的搜索功能和高效的性能在...尽管年代久远,Lucene 2.0仍不失为一个值得研究和学习的经典案例。

    《开发自己的搜索引擎-Lucene 2.0 Heritrix》cd(全)(下载地址)

    通过学习Lucene 2.0和Heritrix的相关知识,我们可以构建出一个简单的搜索引擎。首先使用Heritrix爬取目标网站的内容,然后通过Lucene 2.0对这些内容进行索引和搜索。虽然这只是一个基础框架,但它为理解搜索引擎的...

    开发自己的搜索引擎--Lucene 2.0+Heritrix(爬虫)

    在Lucene 2.0版本中,它已经相当成熟,支持多种功能,如索引创建、查询解析、文档排序等。Lucene的核心优势在于其高效的倒排索引机制,它能够快速地查找包含特定关键词的文档。开发者可以利用Lucene API来创建索引,...

Global site tag (gtag.js) - Google Analytics