利用Boost影响Lucene查询结果的排序

以下代码在Lucene2.1下通过,主要是通过设置Document的Boost来影响文档的权重,以达到控制查询结果顺序的目的(前提是不利用Sort排序的情况下):

private void btnSearch_Click(object sender, EventArgs e)
        {
            RAMDirectory ramDir = new RAMDirectory();
            IndexWriter iw = new IndexWriter(ramDir,new StandardAnalyzer(),true);

            string[] NameList = { "you are my friend", "you are my wife", "I love you" };
            string[] FileList = { "1", "2", "3" };

            for (int i = 0; i < NameList.Length; i++)
            {
                Document doc = new Document();
                doc.Add(new Field("name", NameList[i], Field.Store.YES, Field.Index.TOKENIZED));
                doc.Add(new Field("file", FileList[i], Field.Store.YES, Field.Index.TOKENIZED));

                if (i == 2) { doc.SetBoost(2.0f); }//这里设置了第三个文档优先级最高,所以在搜索出来的结果中,该文档排在最前
                iw.AddDocument(doc);
            }
            iw.Close();

            IndexSearcher _searcher = new IndexSearcher(ramDir);
            QueryParser _parser = new QueryParser("name",new StandardAnalyzer());
            Query  _query = _parser.Parse("you");
            Hits hitDoc = _searcher.Search(_query);

            lstResult.Items.Clear();//lstResult为一个ListBox

            for (int i = 0; i < hitDoc.Length(); i++)
            {
                Document doc = hitDoc.Doc(i);
                lstResult.Items.Add(doc.Get("file") + " " + doc.Get("name"));
            }            
            _searcher.Close();
        }

以下是运行结果

时间: 2024-11-04 20:24:00

利用Boost影响Lucene查询结果的排序的相关文章

lucene 查询语法

Lucene所支持的查询语法可见http://lucene.apache.org/java/3_0_1/queryparsersyntax.html   新版6.0.0可见 : http://lucene.apache.org/core/6_0_0/queryparser/org/apache/lucene/queryparser/classic/package-summary.html#package_description (1) 语法关键字 + - && || ! ( ) { } [

站长该如何利用百度外链查询工具呢

摘要: 很多的站长对百度快照很紧张,认为快照越新越好.突然有那么一天,快照不更新了甚至快照回档了,这可不得了,有很多的百度专家就说,网页快照回档是降权的前兆,曾经有那么一 很多的站长对百度快照很紧张,认为快照越新越好.突然有那么一天,快照不更新了甚至快照回档了,这可不得了,有很多的"百度专家"就说,网页快照回档是降权的前兆,曾经有那么一段时间我相信了.但是,10月23日那次百度对链接作弊算法升级之后,李彦宏在百度站长平台发布的公告却与之相反,让我顿时感觉"砖家"永远

SQL SERVER中对查询结果随机排序

server|排序|随机 译:SQL SERVER中对查询结果随机排序 Randomly Sorting Query Results 查询结果随机排序 Q. How can I randomly sort query results?问:怎样才能对查询结果随机排序? A. To randomly order rows, or to return x number of randomly chosen rows, you can use the RAND function inside the S

看实例学VFP:对查询结果进行排序

本例是一个显示包括各记录的自然情况及实发工资的"工资排行榜".本例在表单的init事件中首先使用select语句对"工资表"的奖金.补助等进行计算,并将查询结果输出为一个包含"实发资金"和"员工编号"的名为lsJJ的临时表:然后对"人员信息表"和临时表lsjj进行表连接查询并对查询结果进行排序后输出为临时表lsb,查询结果中包括所需显示的字段及工资(这是经过计算后的实发工资),最后将lsb设为表格控件的数据

php利用新浪接口查询ip获取地理位置

 这篇文章主要介绍了php利用新浪接口查询ip获取地理位置示例,大家参考使用吧  代码如下: <?php  function getIPLoc_sina($queryIP){     $url = 'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip='.$queryIP;     $ch = curl_init($url);      curl_setopt($ch,CURLOPT_ENCODING ,'utf

mysql查询如何先排序再分组呢?纠结了好几天了。

问题描述 mysql查询如何先排序再分组呢?纠结了好几天了. 比如数据表"article"中有一组这样的数据: id uid title... .... .....375 1 文章标题1376 1 文章标题2377 1 文章标题3378 2 asdfasdf379 3 fdaewqwe... .... ..... 然后我写了一句这样的sql:select * from article order by id desc执行后,结果如下: id uid title... .... ....

退款率不再影响淘宝的搜索排序和营销活动报名

淘宝网继好评率"解绑"之后,对退款率的相关政策又进行了调整,退款率将不再影响卖家报名参加类目活动.淘金币.聚划算等营销活动,也不再影响淘宝的搜索排序.具体"解绑"计划会在11月底开始实施,生效的具体时间,淘宝网会再另行公布. 但为避免买家担心退款申请得不到及时处理,售后服务难以得到保障,淘宝网表示,如果退款未得到合理处理,买家可以申请客服介入.客服介入且退款成功以后,网店"纠纷退款率"将上升,根据淘宝规则,这将会影响搜索排序和营销活动报名.所以淘

利用AJAX进行whois查询

ajax说新颖也不新颖的一项技术,如果你用过google map服务就会体会到他的优点,当然不能乱用,呵呵!    下面是自己写的一个小例子,仅供参考,见笑!    是调用7e的whois查询 详细内容可去网上搜索~    具体代码如下:  main.html内容  <html>    <HEAD>    <title>利用AJAX调用whois查询</title>    <meta http-equiv="Content-Type"

lucene Sort 文档排序

1.Sort org.apache.lucene.search.Sort 封装排序标准的类. SortField[] org.apache.lucene.search.Sort.fields 字段. org.apache.lucene.search.Sort.Sort(SortField field) 构造函数.按照指定的SortField进行排序. org.apache.lucene.search.Sort.Sort(SortField... fields) 上面函数的重载,指定多个field