posts - 0,comments - 7,trackbacks - 0
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]
            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);
posted on 2007-03-05 10:11 坚持学习,每天进步一些 阅读(370) 评论(3)  编辑  收藏 所属分类: OpenSource

FeedBack:
# re: Lucene-2.0学习文档-4[转]
2007-10-07 12:09 | qixoo.com 企讯网--5000万企业速查|求职参考|企业点评|企业从业者与企业的桥梁
企讯网创立于2005年10月,创办之初,受到了众多企业从业者的鼎立支持。但在创办网站的过程中我们也经历了重重磨难,并且因为某些原因,网站曾于2007年1月到6月期间停办。直到2007年7月,企讯网重新开办,并且拥有新域名www.qixoo.com 与 www.qixoo.net 。

企讯网是一个沟通平台。我们建立本站的初衷是为了建立企业从业者与企业的桥梁,使得员工能与企业更好的沟通,我们希望员工能在此平台为企业提出一些好的发展建议,同时企业也能倾听员工的声音,为员工创造一个更好的环境。

企讯网是一个参考平台。通过本站,可以帮助企业人员在求职过程中能有一个参考,并且查询相关的企业信息,以便企业人员能找到符合自身发展的企业。当然,本站的参考信息都是由网友添加,我们不可能验证每一条信息的可靠性,对于部分企业的评价,也许会比较片面和失实。大家在求职过程中,还是应以实际出发,毕竟这里只代表部分声音。

企讯网是一个监督平台。诚然,作为一个普普通通的网站并没有资格与权利去监督一个企业的行为。但作为一个网络媒体,虽然还是那么的微小,但我们希望能通过网络的声音能改变一些企业不恰当的做法,哪怕只是一点点。我们期望能有一个良好的企业大环境,以利于我们国家企业业的发展。


  回复  更多评论
  
# re: Lucene-2.0学习文档-4[转]
2007-10-07 12:10 | qixoo.com 企讯网--5000万企业速查|求职参考|企业点评|从业者与企业的桥梁
我的网站就是用lucene做的,可以交流一下  回复  更多评论
  
# re: Lucene-2.0学习文档-4[转]

只有注册用户登录后才能发表评论。


网站导航: