zoukankan      html  css  js  c++  java
  • 利用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();
            }
    以下是运行结果
    作者:菩提树下的杨过
    出处:http://yjmyzz.cnblogs.com
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    网络基础相关知识内容
    json模块的转义dump 和反转义 loap
    常用模块--time,sys,os,json
    正则表达式
    day_24 模块和包
    day23_内置函数(__del__ item系列 ,模块)
    LuoguP3806 【模板】点分治1 (点分治)
    BZOJ1305/Luogu3153 [CQOI2009]dance跳舞 (network flow)
    LuoguP2217 [HAOI2007]分割矩阵 (DP + memorized search)
    BZOJ3224/LuoguP3369 普通平衡树 (splay)
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/1025059.html
Copyright © 2011-2022 走看看