可按Ctrl+D收藏 蚂蚁资源网

蚂蚁资源网

全文检索系统(信息检索系统主要功能)

  • 全部评论(3)
  • 郭大帅
  • 目前行业网站的全文检索的方式主要有两种方式一:通过数据库自带的全文索引方式二:通过程序来自建全文索引系统以sql server 2005为例2005本身就自带全文索引功能,你可以先对数据库表建立索引,具体如何建索引网上搜索一下,建立完索引之后,你就可以用sql来实现检索功能,例如:select * from ytbxw where contaiins(字段,' 中国');多个查询值之间可以用and 或 or来实现,在单表以及单表视图上建全文索引对2005来说根本不是问题,但在多表视图建全文索引2005目前还无法实现这个功签名系统能,拿www.ytbxw.com为例,其每个栏目的信息都是分开存放的,所以在检索上就无法用该方法来解决这个问题.下面重点说一下如何用程序来实现检索功能如果你想自己开发一个全文检索系统,我想这是相当复杂事情,要想实现也不是那么容易的事情,所以在这里我推荐一套开源程序,那就是dotlucene,我想大家可能都听过这个东东吧,那我就讲讲如何来实现多表情况下的全文检索.1、新建winform项目,把lucene.net.dll添加到该项目中来2、创建一个类,类名可以自己取 public class indexer { private indexwriter writer; //在指定路径下创建索引文件 public indexer(string directory) { writer = new indexwriter(directory, new standardanalyzer(), true); writer.setusecompoundfile(true); } //将信息添加到索引文件中 /*field.text:为索引+读取field.unindexed:不需要做索引*/ public void addhtmldocument(string path,string title,string content) { document doc = new document(); doc.add(field.text("text", content)); doc.add(field.unindexed("path", path)); doc.add(field.text("title", title)); writer.adddocument(doc); }//解析html,过滤html代码 private string parsehtml(string html) { string temp = regex.replace(html, "<[^>]*>", ""); return temp.replace(" ", " "); }//从页面中获取文章标题 private string gettitle(string html) { match m = regex.match(html, "<title>(.*)</title>"); if (m.groups.count == 2) return m.groups[1].value; return "(unknown)"; } //添加新闻到索引 public void addnews() { //从数据库获取记录(这部分略过) for (int i = 1; i <= pagesize; i++) { rootid = int.parse(dr["classid"].tostring().substring(0, 2)); // 写入索引 addhtmldocument( + dr["id"].tostring() + ".html", dr["title"].tostring(), parsehtml(dr["content"].tostring())); }/info/ }//关闭索引 public void close() { writer.optimize(); writer.close(); } }
  • 2021-12-12 16:41:10
  • 免注册用户
  • 完整的文本搜索是一种文本数据检索方法,它与文件中的所有文本和检索项目匹配。完整的文本检索系统是一种用于根据全文搜索理论提供全文搜索服务的软件系统。判断搜索效果的两个指标:检查值\u003d检测到的信息量/相关信息(%)\u003d总信息/检测到的信息(%)Oracle全文检索配置方法:1。检查数据库是否有一个全文搜索功能(这是用于构建的数据库)查看是否存在用户中有CTXSYS用户,并且在查询角色中存在CTxApp角色。上述两个中的一个不满足(不存在),未安装全文搜索功能。使用包含函数时,将报告是否没有完整的文本搜索。2.如果没有,您需要手动建立,首先建立一个全文搜索以使用空间sqlplus /作为sysdba - 输入cOnsole创建表空间IDx_ctxsys数据文件'/ oradata/sg186fx/ctxsys01.dbf大小10240m自动扩展在接下来的32m上maxsize 20480m; - 创建全文搜索表空间3.创建一个全文搜索用户和角色以及相应的包,您需要执行脚本附带Oracle:CD $ Oracle_Home / CTX / admin / catctx.sql或sqlplus:@?/ ctx / admin / catctx.sql ctxsys idx_ctxsys temp nodock在执行此脚本时,输入多个参数,第一个参数ctxsys for ctxsys用户的密码,第二个参数idx_ctxsys是您要用于CTXSYS用户的表空间。第三个参数Temp是CTXSYS用户在解锁状态下使用的第四个参数NOLOCK。4.创建完成后,您要登录CTXSYS / CTXSYS执行以下脚本:@?/ ctx / admin / defaults / dedefus.sql(这是一个非常重要的脚本,然后创建索引将使用此脚本创建的)5首先创建一个全文索引合成器到expres■全文索引的用户,我想使用全文索引,因此,使用授予选项将CTXSYS.CTX_DDL的CTXSYS.CTX_DDL授予执行;连接SGPM / SGPM设置语法分析仪:EXEC CTX_DDL。drop_preference('chinalexer');exec ctx_ddl.create_preference('chinalexer','chinesh_lexer');提供词汇属性:EXEC CTX_DDL.DROP_PREFERED('idx_c_store');beginctx_ddl.create_preference('idx_c_store','basic_storage');ctx_ddl.set_attribut('idx_c_store','i_table_clause','tablespaces idx_ctxsy');ctx_ddl.set_attribute('idx_c_store','i_index_clause','tablespace idx_ctxsy compress 2');结尾;。/ 6在sgpm.c_cons上创建索引创建索引sgpm.idx_c_cons_name(cons_name)indextype是ctxsys.context参数('lexer chinalexer存储idx_c_store');7同步索引变量Jobno编号;begindbms_job.submit(:。jobno,'pkg_sp_tools.p_cont_sys_index();',sysdate,'trunc(sysdate)+19 / 24 + 1'); - 执行个性化方法。结尾;/普通用于使用:EXEC CTX_DDL.SYNC_INDEX('idx_c_cons_name');这里,全文搜索创建成功,并且包含功能可以正常使用。注意:ORA-29879在创建期间出现,ORA-29879:无法在列出相同索引类型的列上创建多个域索引,此索引是在其他用户下创建的。
  • 2021-12-12 16:40:00
  • 追梦
  • 什么是全文检索,全文检索(Fullnbsp;Textnbsp;Retrieval),即检索结果(送回来的结果)是符合检索要求的全文.标题检索,只查标题.关键字检索,有些文章书藉有关键字,只查关键字,送返书名或摘要.(图书馆常用).全文检索,要查全文.这是区别.
  • 2021-12-12 16:40:00
  • 商品推荐