首页 > 数据库 >用dotLucene为数据库内容建立索引

用dotLucene为数据库内容建立索引

时间:2023-06-30 12:31:51浏览次数:42  
标签:string doc 数据库 Results dotLucene 索引 Add new public

//建立索引的类        
public class Indexer
         {
             private IndexWriter writer;
             Document doc = new Document();             public Indexer(string Directory)
             {
                 InitializeIndex(Directory);
             }

             public void InitializeIndex(string Directory)
             {
                 writer = new IndexWriter(Directory, new StandardAnalyzer(), true);
                 writer.SetUseCompoundFile(true);
             }             public void AddDocument(string DateAdded , string Description , string URL , string Title )
             {
                 doc.Add(Field.Keyword("date", DateAdded));
                 doc.Add(Field.Text("description", Description));
                 doc.Add(Field.Text("url", URL));            
                 doc.Add(Field.Text("title", Title));
                 doc.Add(Field.Keyword("sortdate", ReturnSortDate(DateTime.Parse(DateAdded)).ToString()));
                 writer.AddDocument(doc);
             }
                         

             private int ReturnSortDate(DateTime DateAdded)
             {
                 string thisMonth = DateAdded.Month.ToString();                 if (thisMonth.Length == 1)
                 {
                     thisMonth = "0" + thisMonth;
                 }                 string thisYear   = DateAdded.Year.ToString();
                 string thisDay = DateAdded.Day.ToString();                 if( thisDay.Length == 1 )
                 {
                     thisDay = "0" + thisDay;
                 }                 int time = int.Parse(thisYear+thisMonth +thisDay);
                                 return time;
             }             public void Close()
             {
                 writer.Optimize();
                 writer.Close();
             }
         }//搜索的类
public class Searcher
         {
             private IndexSearcher searcher;             public Searcher(string Directory)
             {
                 searcher = new IndexSearcher(Directory);
             }             public DataTable Search(string Query, string SortBy)
             {
                 DataTable Results = new DataTable(); 
                 Results.Columns.Add("Title");
                 Results.Columns.Add("Description");
                 Results.Columns.Add("URL");
                 Results.Columns.Add("Published");
            
                 Query MyQuery   = QueryParser.Parse(Query, "description", new StandardAnalyzer());
                 Sort   sort = new Sort(SortBy, true);
                 Hits Hits = searcher.Search(MyQuery, sort);                 int mTotalRecs = Hits.Length();
                 int iCount = 0;
                 while (iCount < mTotalRecs)
                 {
                     Document doc = Hits.Doc(iCount);
                     DataRow row = Results.NewRow();
                     row["url"] = doc.Get("url");
                     row["Title"] = doc.Get("title");
                     row["Description"] = doc.Get("description");
                     row["Published"] = doc.Get("date");
                     Results.Rows.Add(row);                     iCount++;
                 }                 searcher.Close();
                 return Results;
             }
         }

作者:古道轻风




标签:string,doc,数据库,Results,dotLucene,索引,Add,new,public
From: https://blog.51cto.com/u_15949547/6589660

相关文章

  • 一个sqlite的例子,将图片存入sqlite数据库
          最近学习sqlite,在看了一些资料后,写了一个例子,可能对初学sqlite或者学习将图片插入数据库等的有用,把源码发出来,给需要参考的。也欢迎大家提出建议。         包含常用的sql操作,增删改查,同时也在例子中说明,sqlit的sql语句使用参数,可以用@也可以用$。     ......
  • mongodb数据库操作备忘
    db.SMU_REALDATA_PARAMETERS.update({},{$rename:{"interfaceID":"INTERFACEID"}},false,true); 修改field,字段名,不是修改值哟。 网上搜索mongodb语言和CheatSheet手册。https://www.mongodb.com/developer/products/mongodb/cheat-sheet/navcate工具和下面工具都可以。 ......
  • Linux 中重置数据库的 root 密码的技巧
    其中一项是设置数据库root帐户的密码-你必须保持私密,并仅在绝对需要时使用。如果你忘记了密码或需要重置密码(例如,当数据库管理员换人或被裁员!),这篇文章会派上用场。如果你是第一次设置MySQL或MariaDB数据库,你可以直接运行mysql_secure_installation来实现基本的安......
  • 清除SQL Server数据库日志(ldf文件)的几种方法
    随着系统运行时间的推移,数据库日志文件会变得越来越大,这时我们需要对日志文件进行备份或清理。  随着系统运行时间的推移,数据库日志文件会变得越来越大,这时我们需要对日志文件进行备份或清理。  解决方案1-直接删除本地ldf日志文件:(比较靠谱方案!)  1.......
  • 主键索引、唯一索引和普通索引的关系
    主键索引:在数据库中定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。主键索引要求主键中的每个值是唯一的。当在查询中使用主键索引时,它还允许快速访问数据。主键索引不能为空。每个表只能有一个主键唯一索引:不允许两行具有相同的索引值。但可以都为NULL。如果......
  • 存储引擎 索引
    存储引擎mysql默认存储引擎为innodb,可以通过以下代码在创建表时指定存储引擎createtablemy_myisam(----)engine=MyIsaM; 查看当前数据库支持的存储引擎showengines;   引擎选择 索引分类 聚集索引:数据行的物理存储顺序与列值(一般......
  • mybatis-plus框架配合数据库表时间字段自动更新问题
    背景在项目开发前的设计阶段,我们会根据需求分析、业务梳理的结果进行领域建模。通常有2种方式:实体设计优先数据库设计优先无论哪种方式,最终会创建数据库、数据表。通常在每一张表,会设计2个时间自动,创建时间和修改时间,这样在查询数据时能够清晰的看到数据行是什么时候创建......
  • C# ModbusRtu或者TCP协议上位机源码,包括存储,数据到SQL SERVER数据库,趋势曲线图,数据报
    C#ModbusRtu或者TCP协议上位机源码,包括存储,数据到SQLSERVER数据库,趋势曲线图,数据报表,实时和历史报警界面,有详细注释,需要哪个协议版本原创文章,转载请说明出处,资料来源:http://imgcs.cn/5c/655313350668.html......
  • 重磅新品全球公测!华为云数据库又有大动作
    5月24日,HuaweiCloudCOMPASS2023在深圳举行,大会汇聚了众多拉美地区互联网领域精英、产业领袖、企业家等人群,共同探讨拉美数字化发展新趋势,共谋拉美数字化发展之路。华为云数据库软件总工程师彭立勋在会上分享了当前数据库行业发展趋势、GaussDB系列数据库的创新技术和最新实践成......
  • 这年头怕数据泄露?全密态数据库:无所谓,我会出手​ 吊炸天的全密态数据库,到底是个啥?​ 藏
    数据被标价售卖莫名其妙接到诈骗电话企业数据泄露事件让人恐慌......表面上看似乎是个人数据信息的泄露再深究其实是掌握着个人数据信息的企业面临的数据泄露、数据篡改等风险越来越多作为数据的核心载体数据库,该如何提供安全保障?这就需要一项能支持数据端到端加密的技术我们称之......