全文检索经典例子

合集下载

检索式格式及例子

检索式格式及例子

检索式格式及例子【篇一:检索式格式及例子】几大中文数据库专业检索式举例cnki专业检索式可检索字段:su=主题,ti=篇名,ky=关键词,ab=摘要,ft=全文,au=作者,fi=第一作者,af=作者单位,cv=会议名称,cp=论文集名称, rf=参考文献,rt=更新时间,fu=基金,clc=中图分类号,ib=isbn ,cf=被引频次示例:1)ti= 生态 and ky= 生态文明 and (au % 陈 + 王 ) 可以检索到篇名包括“生态”并且关键词包括“生态文明”并且作者为“陈”姓和“王”姓的所有文章;2)su= 北京 * 奥运 and ft= 环境保护可以检索到主题包括“北京”及“奥运”并且全文中包括“环境保护”的信息;3)su=( 经济发展 + 可持续发展 )* 转变 - 泡沫可检索“经济发展”或“可持续发展”有关“转变”的信息,并且可以去除与“泡沫”有关的部分内容。

ti= 精益生产 and su=( 持续改善 + 改善 ) and (au % 陈 + 王 )cnki专业检索式:可检索字段:题名(题名),关键词(关键词),摘要(摘要),全文(全文),作者(作者),第一责任人(第一作者),单位(作者单位),来源(来源),主题(主题),基金(基金),引文(参考文献)su=( 心跳骤停 + 心搏骤停 ) and su=( 心肺复苏 + 心肺脑复苏 ) and su=( 溶栓治疗 + 尿激酶 + 链激酶 + 组织型纤维蛋白酶原激活剂 )注:su—限定范围为主题ti—题名ky—关键词ab—摘要ft—全文au—作者fi—第一作者af—作者单位jn—期刊名称rf—参考文献rt—更新时间pt—发表时间ye—期刊年fu—基金clc—中图分类号sn—issncn—cn号cf—被引频次si—sci收录刊ei—ei收录刊hx—核心期刊检索项也可直接使用中文名称,如“刊名=”、“题名=”题名= 保健 # 康复 and (作者=张三 not 机构=兽医)万方数据专业检索式:系统使用的检索语言是cql(common query language),含有空格或其他特殊字符的单个检索词用引号( )括起来布尔运算符用“and or not”检索项可为:title、creator、source、keywords、abstract creator=张三 and keywords=危重*作者=张三 and 论文题名=急性中毒论文标题= 中毒 and 论文标题= 洗胃 and 作者单位= 总医院*维普数据专业检索式:k=临床医学*a=张三(k=(cpr+cpcr)+t=复苏)*r=骤停-k=院前注:k—关键词a—作者f—第一作者s—机构m—题名或关键词j—刊名t—题名c—分类号r—文摘u—任意字段布尔运算符:“*”代表“并且”“+”代表“或者”“-”代表“不包含”【篇二:检索式格式及例子】检索式怎么写举个例子范文一:范文六:基于单片机的多路数据采集系统设计原文:全文主题需要:全、新、准学科:工科概念:数据采集系统设计把概念转换为检索词:单片机;数据采集表达式:“单片机”与“数据采集”检索目的:数量(30-50)、年限(1~3年)报刊、学位、专利、会议语种:中文数据库:维普检索途径:题名或关键词检索词:单片机;数据采集论文:基于单片机的多路数据采集系统设计xxx四川理工学院四川自贡 64300【摘要】本文介绍了基于单片机的数据采集的硬件设计和软件设计,数据采集系统是模拟域与数字域之间必不可少的纽带,它的存在具有着非常重要的作用。

全文检索系统原理与实例

全文检索系统原理与实例

中国科技信息研究所 化柏林
全文信息检索技术
1.倒排索引
1 3 12 A building is 52 57 with people.
clothes wear people crowded street building
15 18 in the 65 People
22 30 34 41 44 street. The street is crowded 72 77 81 86 89 wear all kind of clothes.
中国科技信息研究所 化柏林
全文信息检索技术
3. TRS Database Server


来自:北京拓尔思公司 支持:TEXT、HTML、RTF、OFFICE、 PDF、XML
中国科技信息研究所 化柏林
全文信息检索技术
4. Lucence

来自:apache软件基金会 支持:任意可转为文本格式的数据
中国科技信息研究所 化柏林
全文信息检索技术
向量分词结果

情报学/ 是 研究/ 信息/ 、 情报/ 和 知识/ 的 产生/ 、 传递/ 、 利用/ 规律/ , 运用/ 现代/ 科学技术/ 有效/ 地 管理/ 和 利用/ 信息/ 、 情报/ 和 知识/ 的 一/ 门/ 科学/ 。 情报学/ 的 任务/ 是 情报/ 搜集/ 、 分析/ 和 研究/ , 功能/ 是 决策支持/ 、 预警/ 和 反情报/ , 作用/ 是 耳目/ 、 尖兵/ 与 参谋/ 。 情报学/ 既 不 是 纯粹/ 的 自然科学/ 和 工程科学/ , 也 不 是 单纯/ 的 社会科学/ , 而 是 一/ 门/ 交 叉学科/ 。


文章二的内容:
情报学的研究任务是确定情报学的学科范畴、构建情报学 的学科体系、发现情报学的基础理论、总结情报学的研究 方法、分析情报学的核心技术、跟踪情报学的研究热点、 预测情报学的发展趋势等。情报学的前沿领域包括竞争情 报、信息构建、知识管理、知识抽取、知识发现、智能检 索、智能协同、技术跟踪与预测等相关研究。

高级检索式格式及例子

高级检索式格式及例子

高级检索式格式及例子
以下是 6 条关于高级检索式格式及例子:
1. “布尔逻辑检索可厉害啦!就像搭积木一样,把不同的条件组合起来。

比如说,你想找关于‘猫咪’但不是‘橘猫’的资料,你就可以用‘猫咪’ NOT ‘橘猫’。

这多神奇呀!就像你能精准地筛选出你想要的那部分,不
是吗?”
2. “截词检索简直是个宝藏技巧!你如果想找所有以‘科技’开头的词,直接用‘科技’就行啦。

这不就像是撒下一张大网,把相关的都捞起来嘛!想象一下,你能一下子抓住一大把有用的信息,是不是超棒呀?”
3. “位置检索也很有趣哦!假如你在研究一个特定地区的事物,你可以用位置检索来锁定范围呢。

就好比说你在找北京的美食,你就可以具体到
‘北京 + 美食’呀,这不是能让你的检索更有针对性、更准确吗?”
4. “短语检索真的非常实用哟!当你想要精确找到某个特定短语的时候,直接把它括起来输入就好啦。

就像你在茫茫信息海洋中,一下子就抓住了那根你要的金线,这感觉是不是爽歪歪呀?比如‘智能家居系统’,用短语检索就能准确找到啦。


5. “字段检索可太有用啦!就好像你有一把钥匙,可以打开特定的信息宝库。

比如说,你只想找标题里有‘旅行攻略’的文章,那就选择标题字段进行检索呗!是不是感觉一下子找到了窍门呀?”
6. “限制检索能帮你大大缩小范围呢!感觉就像是给你的检索加上了一个精准的瞄准镜。

比如你只想找最近一年的资料,那就加上时间限制呀。

这样你就不会被海量的旧信息淹没啦,多高效啊,对吧?”
我的观点结论:高级检索式格式丰富多彩,各有奇妙之处,学会并运用它们,能让我们在信息的海洋中畅游,精准找到我们想要的内容!。

知识点检索全文检索

知识点检索全文检索

知识点检索全文检索全文检索是一种用于快速检索文本内容的技术,通过将文本内容进行分词、索引和匹配来实现。

全文检索常用于文档、网页、邮件等场景,能够提高效率和准确性。

以下是全文检索的一些重要知识点:1.分词:全文检索首先需要将文本内容进行分词,将长句或段落划分成一个个独立的词。

分词的目的是将文本内容拆分成最小的检索单位,例如将句子“我爱中国”分词为“我”、“爱”和“中国”。

常见的中文分词算法有基于词典的正向最大匹配、逆向最大匹配、双向最大匹配,以及基于统计的基于互信息和条件随机场模型等。

2. 索引:全文检索需要将分词后的词语建立索引,以便于后续的检索和排序。

索引是一种数据结构,常见的索引结构有倒排索引(Inverted Index),它记录每个词语出现的位置和出现次数。

通过索引,可以快速定位包含特定词语的文档或网页。

3.倒排索引:倒排索引是全文检索中常用的索引结构,它将词语与包含该词语的文档或网页建立映射关系。

倒排索引对于每个词语,都记录了包含该词语的文档或网页的相关信息,如位置、权重等。

倒排索引可以极大地提高检索效率,例如通过倒排索引可以快速找到包含关键词“全文检索”的文档或网页。

4.布尔检索:布尔检索是一种基于逻辑运算的检索方法,可以通过布尔运算符(AND、OR、NOT)对检索词进行组合。

布尔检索的优点是简单直观,但对于包含大量文档的检索集合来说,布尔运算的结果可能过于宽泛或过于狭窄。

5.向量空间模型:向量空间模型是一种基于向量的文本表示方法,将文本表示为向量空间中的一个点。

每个词语在向量空间中都有一个对应的坐标,该坐标表示该词语在文本中出现的频率或权重。

通过计算文本之间的相似度,可以实现文本的相似性排序和推荐。

6. 相似度计算:在全文检索中,相似度计算是衡量检索结果与查询的相关性的重要指标。

常用的相似度计算方法有余弦相似度和Jaccard相似度等。

余弦相似度主要用于向量空间模型中,通过计算两个向量的夹角大小来表示相似度;Jaccard相似度主要用于布尔检索中,通过计算两个集合的交集与并集的比值来表示相似度。

全文检索技术在电子商务中的应用与研究

全文检索技术在电子商务中的应用与研究

全文检索技术在电子商务中的应用与研究随着互联网和移动互联网的不断发展,电子商务也成为了一个不可忽视的业务领域,越来越多的企业开始将电子商务作为其重要的业务途径。

在电子商务过程中,搜索引擎是至关重要的部分,其中全文检索技术更是起到了不可替代的作用。

全文检索技术是目前搜索引擎中最基本的技术之一,全文检索技术可用于快速准确地找出包含关键字的文档,解决了文本搜索中的模糊问题。

随着电子商务规模的不断扩大,全文检索技术在电子商务中的应用也变得越来越重要。

一、全文检索技术的应用场景1. 商品搜索商品搜索是电子商务中最常见的一种全文检索应用场景,通过商品名称、商品描述、关键词等方式进行商品的全文检索,大大提升了用户搜索效率和用户体验。

同时,还可通过全文检索对商品进行自然语言处理和分类,给用户提供更加贴近他们需求的搜索结果。

2. 新闻搜索电子商务网站往往不仅仅是一个购物平台,而且还提供了包括新闻、资讯等多种服务。

全文检索技术可用于新闻资讯的查询、分类、筛选和推荐,从而让用户更加方便地浏览并获取新闻信息。

3. 团购搜索团购是电子商务中的一项热门服务,对于团购网站来说,全文检索技术可用于处理大量的优惠信息、团购信息以及用户评价信息等。

全文检索技术可提高用户的搜索效率,同时也可通过搜索聚合相关的选项和信息,从而提升用户购物体验。

二、全文检索技术的工作原理全文检索技术的工作原理是将文档中的全部内容转换成关键词列表,建立关键词和文档之间的映射关系。

当用户提交关键字请求时,全文检索系统会在关键词列表中匹配关键词,找出相关文档列表,并按相关性进行排序,最终将匹配的文档呈现给用户。

在具体实现过程中,全文检索技术通常采用向量空间模型、倒排索引和词干分析等多种算法和技术。

向量空间模型是检索引擎基于文本向量的关键词匹配算法,该算法将每个文档转换成一个向量,将每个搜索关键词也转换成一个向量,然后再使用向量之间的余弦相似度计算搜索结果的相关性。

信息检索的例子

信息检索的例子

信息检索的例子以下是 6 条关于信息检索的例子:例子 1:你有没有过这样的经历,想找一本多年前读过的精彩小说,却怎么也想不起来书名?这就像是在茫茫大海中寻找那一颗特别的贝壳,真的好难啊!比如我记得那本书里有个超帅的男主角,还有一段浪漫至极的情节,可就是记不得关键信息,哎呀,这时候信息检索可太重要啦,能帮我快点找到那本书呀!例子 2:当你想吃一种特定口味的美食,却不知道哪家餐厅有,你会怎么办?这不就像在森林里寻找一颗特定的树嘛!我之前就特别想吃那种甜甜的巧克力蛋糕,到处打听都没问到,后来通过在网上检索,居然真的找到了有卖的地方,你说信息检索神奇不神奇?例子 3:你想给朋友准备一个特别的礼物,却不知道从何下手,那感觉真纠结啊!就好比在迷宫里找出口一样。

有一次我想给朋友个惊喜,完全不知道送啥,还好我利用信息检索,发现了他一直想要的一个限量版玩具,哇,这可多亏了信息检索呀!例子 4:在学习上遇到难题,怎么都想不通,多着急啊!这就如同在黑暗中摸索。

记得我有次做数学作业,有个知识点怎么都搞不懂,还好我通过信息检索,找到了详细的讲解视频,一下子就豁然开朗了,信息检索真的是学习的好帮手呢!例子 5:想出去旅游,却不知道哪个景点好玩,多迷茫呀!这简直就是在雾中前行啊。

我之前计划旅行时,就是靠信息检索,了解了各个景点的特色和评价,才选到了心仪的地方,信息检索是不是超厉害?例子 6:想找一首很久以前听过的好听歌曲,只记得一点旋律,这可咋办呀?就像在一堆干草里找一根针一样难。

但利用信息检索,输入一些关键信息,说不定就能找到啦,就像我之前成功找到了那首让我心心念念的歌一样,所以说信息检索就是牛啊!我的观点结论就是:信息检索在我们的生活中真的太重要啦,无论是找东西、做决策,还是解决问题,都能发挥巨大的作用,我们可不能小瞧它呀!。

检索式格式及例子

检索式格式及例子

检索式格式及例子【篇一:检索式格式及例子】几大中文数据库专业检索式举例cnki专业检索式可检索字段:su=主题,ti=篇名,ky=关键词,ab=摘要,ft=全文,au=作者,fi=第一作者,af=作者单位,cv=会议名称,cp=论文集名称, rf=参考文献,rt=更新时间,fu=基金,clc=中图分类号,ib=isbn ,cf=被引频次示例:1)ti= 生态 and ky= 生态文明 and (au % 陈 + 王 ) 可以检索到篇名包括“生态”并且关键词包括“生态文明”并且作者为“陈”姓和“王”姓的所有文章;2)su= 北京 * 奥运 and ft= 环境保护可以检索到主题包括“北京”及“奥运”并且全文中包括“环境保护”的信息;3)su=( 经济发展 + 可持续发展 )* 转变 - 泡沫可检索“经济发展”或“可持续发展”有关“转变”的信息,并且可以去除与“泡沫”有关的部分内容。

ti= 精益生产 and su=( 持续改善 + 改善 ) and (au % 陈 + 王 )cnki专业检索式:可检索字段:题名(题名),关键词(关键词),摘要(摘要),全文(全文),作者(作者),第一责任人(第一作者),单位(作者单位),来源(来源),主题(主题),基金(基金),引文(参考文献)su=( 心跳骤停 + 心搏骤停 ) and su=( 心肺复苏 + 心肺脑复苏 ) and su=( 溶栓治疗 + 尿激酶 + 链激酶 + 组织型纤维蛋白酶原激活剂 )注:su—限定范围为主题ti—题名ky—关键词ab—摘要ft—全文au—作者fi—第一作者af—作者单位jn—期刊名称rf—参考文献rt—更新时间pt—发表时间ye—期刊年fu—基金clc—中图分类号sn—issncn—cn号cf—被引频次si—sci收录刊ei—ei收录刊hx—核心期刊检索项也可直接使用中文名称,如“刊名=”、“题名=”题名= 保健 # 康复 and (作者=张三 not 机构=兽医)万方数据专业检索式:系统使用的检索语言是cql(common query language),含有空格或其他特殊字符的单个检索词用引号( )括起来布尔运算符用“and or not”检索项可为:title、creator、source、keywords、abstract creator=张三 and keywords=危重*作者=张三 and 论文题名=急性中毒论文标题= 中毒 and 论文标题= 洗胃 and 作者单位= 总医院*维普数据专业检索式:k=临床医学*a=张三(k=(cpr+cpcr)+t=复苏)*r=骤停-k=院前注:k—关键词a—作者f—第一作者s—机构m—题名或关键词j—刊名t—题名c—分类号r—文摘u—任意字段布尔运算符:“*”代表“并且”“+”代表“或者”“-”代表“不包含”【篇二:检索式格式及例子】检索式怎么写举个例子范文一:范文六:基于单片机的多路数据采集系统设计原文:全文主题需要:全、新、准学科:工科概念:数据采集系统设计把概念转换为检索词:单片机;数据采集表达式:“单片机”与“数据采集”检索目的:数量(30-50)、年限(1~3年)报刊、学位、专利、会议语种:中文数据库:维普检索途径:题名或关键词检索词:单片机;数据采集论文:基于单片机的多路数据采集系统设计xxx四川理工学院四川自贡 64300【摘要】本文介绍了基于单片机的数据采集的硬件设计和软件设计,数据采集系统是模拟域与数字域之间必不可少的纽带,它的存在具有着非常重要的作用。

全文检索例子

全文检索例子

本文由美白面膜排行榜整理全文检索例子lucene3搜索引擎,索引建立搜索排序分页高亮显示, IKAnalyzer分词public class LuceneService {private final Log logger = LogFactory.getLog(LuceneService.class);private final String dirPath = "d:/temp/user";Analyzer analyzer = new IKAnalyzer();Directory directory = null;IndexWriter writer = null;IndexSearcher indexSearcher = null;private void confirmDirs() {File indexFile = new File(dirPath);if (!indexFile.exists()) {indexFile.mkdirs();}if (!indexFile.exists() || !indexFile.canWrite()) {if (logger.isDebugEnabled())logger.error("索引文件目录创建失败或不可写入!");}}public void init() {confirmDirs();try {File f = new File(dirPath);directory = FSDirectory.open(f);} catch (Exception e) {if (logger.isDebugEnabled()) {logger.error("解除索引文件锁定失败!" +e.getCause());}}}public void createIndex(List<User> userList) {init();try {// 第一个参数是存放索引目录有FSDirectory(存储到磁盘上)和RAMDirectory(存储到内存中),// 第二个参数是使用的分词器,第三个:true,建立全新的索引,false,建立增量索引,第四个是建立的索引的最大长度writer = new IndexWriter(directory, analyzer,true,IndexWriter.MaxFieldLength.LIMITED);writer.setMergeFactor(500);writer.setMaxBufferedDocs(155);writer.setMaxFieldLength(Integer.MAX_VALUE);writeIndex(writer, userList);writer.optimize();writer.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public List<User> search(String keyword) {File indexFile = new File(dirPath);if (!indexFile.exists()) {return null;}Directory dir;try {dir = FSDirectory.open(indexFile);indexSearcher = new IndexSearcher(dir);indexSearcher.setSimilarity(new IKSimilarity()); // 单字段查询,单条件查询// Query query = IKQueryParser.parse("userInfo", keyword);// 多字段,单条件查询String[] fields = new String[] { "userInfo", "parameter1" };Query query = IKQueryParser.parseMultiField(fields, keyword);// 多字体,单条件,多BooleanClause.Occur[] flags ,查询条件的组合方式(Or/And)// BooleanClause.Occur[]数组,它表示多个条件之间的关系, // BooleanClause.Occur.MUST表示 and,// BooleanClause.Occur.MUST_NOT表示not,// BooleanClause.Occur.SHOULD表示or.// String[] fields =newString[]{"userInfo","parameter1"};// BooleanClause.Occur[] flags=new//BooleanClause.Occur[]{BooleanClause.Occur.MUST,BooleanClause.Occur.SHOULD};// Query query = IKQueryParser.parseMultiField(fields, // keyword,flags);// //多Field,多条件查询分析// String[] fields =newString[]{"userInfo","parameter1"};// String[] queries = new String[]{keyword,keyword};// Query query =IKQueryParser.parseMultiField(fields,queries);// 多Field,多条件,多Occur 查询// String[] fields =newString[]{"userInfo","parameter1"};// String[] queries = new String[]{keyword,keyword};// BooleanClause.Occur[] flags=new//BooleanClause.Occur[]{BooleanClause.Occur.MUST,BooleanClause.Occur .SHOULD};// Query query =//IKQueryParser.parseMultiField(fields,queries,flags);// 搜索相似度最高的20条记录TopDocs topDocs = indexSearcher.search(query, 20);ScoreDoc[] hits = topDocs.scoreDocs;return hitsToQuery(hits, query);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}private List<User> hitsToQuery(ScoreDoc[] hits, Query query) {List<User> list = new ArrayList<User>();try {for (int i = 0; i < hits.length; i++) {User u = new User();Document doc = indexSearcher.doc(hits[i].doc);u.setUserId(Integer.parseInt(doc.get("userId")));u.setUserName(doc.get("userName"));u.setUserAge(Integer.parseInt(doc.get("userAge")));// 高亮设置SimpleHTMLFormatter simpleHtmlFormatter = new SimpleHTMLFormatter("<font color=\"red\">","</font>");Highlighter highlighter = newHighlighter(simpleHtmlFormatter,new QueryScorer(query));TokenStream tokenStream =analyzer.tokenStream("text",new StringReader(doc.get("userInfo")));String userInfo =highlighter.getBestFragment(tokenStream, doc.get("userInfo"));if (userInfo != null) {u.setUserInfo(userInfo);} else {u.setUserInfo(doc.get("userInfo"));}SimpleHTMLFormatter simpleHtmlFormatter1 = new SimpleHTMLFormatter("<font color=\"red\">","</font>");Highlighter highlighter1 = new Highlighter(simpleHtmlFormatter1, newQueryScorer(query));TokenStream tokenStream1 =analyzer.tokenStream("text1",new StringReader(doc.get("parameter1")));String p1 =highlighter1.getBestFragment(tokenStream1, doc.get("parameter1"));if (p1 != null) {u.setParameter1(p1);} else {u.setParameter1(doc.get("parameter1"));}u.setParameter2(doc.get("parameter2"));u.setParameter3(doc.get("parameter3"));u.setParameter4(doc.get("parameter4"));list.add(u);}indexSearcher.close();return list;} catch (CorruptIndexException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InvalidTokenOffsetsException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}public void writeIndex(IndexWriter writer, List<User> userList) {try {for (User u : userList) {Document doc = getDoc(u);writer.addDocument(doc);}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}private Document getDoc(User user) {System.out.println("用户ID 为" + user.getUserId() + " 索引被创建");Document doc = new Document();addField2Doc(doc, user, "userId", Store.YES,Index.NOT_ANALYZED);addField2Doc(doc, user, "userName", Store.YES,Index.NOT_ANALYZED);// Index.NOT_ANALYZED// 不分词,但建立索引addField2Doc(doc, user, "userAge", Store.YES,Index.NOT_ANALYZED);// Index.ANALYZED// 分词并且建立索引addField2Doc(doc, user, "userInfo", Store.YES,Index.ANALYZED);addField2Doc(doc, user, "parameter1", Store.YES,Index.ANALYZED);addField2Doc(doc, user, "parameter2", Store.YES,Index.ANALYZED);addField2Doc(doc, user, "parameter3", Store.YES,Index.ANALYZED);addField2Doc(doc, user, "parameter4", Store.YES,Index.ANALYZED);return doc;}private void addField2Doc(Document doc, Object bean, String name, Store s,Index i) {String value;try {value = BeanUtils.getProperty(bean, name);if (value != null) {doc.add(new Field(name, value, s, i,Field.TermVector.WITH_POSITIONS_OFFSETS));}} catch (IllegalAccessException e) {logger.error("get bean property error", e);} catch (InvocationTargetException e) {logger.error("get bean property error", e);} catch (NoSuchMethodException e) {logger.error("get bean property error", e);}}/*** 没有排序,有高亮,有分页** @param pageNo* @param pageSize* @param keyword* @return*/public PageBean getPageQuery(int pageNo, int pageSize, String keyword) {List result = new ArrayList();File indexFile = new File(dirPath);if (!indexFile.exists()) {return null;}Directory dir;try {dir = FSDirectory.open(indexFile);indexSearcher = new IndexSearcher(dir);indexSearcher.setSimilarity(new IKSimilarity());String[] fields = new String[] { "userInfo","parameter1" };BooleanClause.Occur[] flags = new BooleanClause.Occur[] {BooleanClause.Occur.MUST,BooleanClause.Occur.SHOULD };Query query = IKQueryParser.parseMultiField(fields, keyword, flags);TopScoreDocCollector topCollector = TopScoreDocCollector.create(indexSearcher.maxDoc(), true);indexSearcher.search(query, topCollector);// 查询当页的记录ScoreDoc[] docs = topCollector.topDocs((pageNo - 1) * pageSize,pageSize).scoreDocs;// String[] highlightCol = {"userInfo", "parameter1"}; // 高亮设置SimpleHTMLFormatter simpleHtmlFormatter = new SimpleHTMLFormatter("<font color=\"red\">", "</font>"); Highlighter highlighter = newHighlighter(simpleHtmlFormatter,new QueryScorer(query));for (ScoreDoc scdoc : docs) {User u = new User();Document doc = indexSearcher.doc(scdoc.doc);//// for (Fieldable fa : doc.getFields()) {// System.out.println(());// String value = doc.get(());// for (String col : highlightCol) {// if(().equals(col)) {// //设置高显内容// TokenStream tokenStream =analyzer.tokenStream("text",new// StringReader(value));// value = highlighter.getBestFragment(tokenStream, value);// }// }//// }u.setUserId(Integer.parseInt(doc.get("userId")));u.setUserName(doc.get("userName"));u.setUserAge(Integer.parseInt(doc.get("userAge")));TokenStream tokenStream =analyzer.tokenStream("text",new StringReader(doc.get("userInfo")));String userInfo =highlighter.getBestFragment(tokenStream, doc.get("userInfo"));if (userInfo != null) {u.setUserInfo(userInfo);} else {u.setUserInfo(doc.get("userInfo"));}TokenStream tokenStream1 =analyzer.tokenStream("text1",new StringReader(doc.get("parameter1")));String p1 =highlighter.getBestFragment(tokenStream1, doc.get("parameter1"));if (p1 != null) {u.setParameter1(p1);} else {u.setParameter1(doc.get("parameter1"));}u.setParameter2(doc.get("parameter2"));u.setParameter3(doc.get("parameter3"));u.setParameter4(doc.get("parameter4"));result.add(u);}PageBean pb = new PageBean();pb.setCurrentPage(pageNo);// 当前页pb.setPageSize(pageSize);pb.setAllRow(topCollector.getTotalHits());// hit中的记录数目pb.setList(result);return pb;} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InvalidTokenOffsetsException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}/*** 排序,有高亮,有分页** @param pageNo* @param pageSize* @param keyword* @return*/public PageBean getPageQuery2(int pageNo, int pageSize, String keyword) {List result = new ArrayList();File indexFile = new File(dirPath);if (!indexFile.exists()) {return null;}Directory dir;try {dir = FSDirectory.open(indexFile);indexSearcher = new IndexSearcher(dir);indexSearcher.setSimilarity(new IKSimilarity());String[] fields = new String[] { "userInfo", "parameter1" };BooleanClause.Occur[] flags = new BooleanClause.Occur[] {BooleanClause.Occur.MUST,BooleanClause.Occur.SHOULD };Query query = IKQueryParser.parseMultiField(fields, keyword, flags);// 多字段排序,设置在前面的会优先排序SortField[] sortFields = new SortField[2];SortField sortField = new SortField("userId",SortField.INT, false);//false升序,true降序SortField FIELD_SEX = new SortField("userAge", SortField.INT, true);sortFields[0] = sortField;sortFields[1] = FIELD_SEX;Sort sort = new Sort(sortFields);TopDocs topDocs = indexSearcher.search(query, null, 50, sort);if (topDocs.totalHits != 0) {// for(ScoreDoc sd : topDocs.scoreDocs) {//// }// 高亮设置SimpleHTMLFormatter simpleHtmlFormatter = new SimpleHTMLFormatter("<font color=\"red\">", "</font>");Highlighter highlighter = newHighlighter(simpleHtmlFormatter,new QueryScorer(query));for (int i = (pageNo - 1) * pageSize; i < pageSize * pageNo; i++) {ScoreDoc scdoc = topDocs.scoreDocs[i];User u = new User();Document doc = indexSearcher.doc(scdoc.doc); u.setUserId(Integer.parseInt(doc.get("userId")));u.setUserName(doc.get("userName"));u.setUserAge(Integer.parseInt(doc.get("userAge")));TokenStream tokenStream =analyzer.tokenStream("text",newStringReader(doc.get("userInfo")));String userInfo =highlighter.getBestFragment(tokenStream,doc.get("userInfo"));if (userInfo != null) {u.setUserInfo(userInfo);} else {u.setUserInfo(doc.get("userInfo"));}TokenStream tokenStream1 =analyzer.tokenStream("text1",newStringReader(doc.get("parameter1")));String p1 =highlighter.getBestFragment(tokenStream1, doc.get("parameter1")); if (p1 != null) {u.setParameter1(p1);} else {u.setParameter1(doc.get("parameter1")); }u.setParameter2(doc.get("parameter2"));u.setParameter3(doc.get("parameter3"));u.setParameter4(doc.get("parameter4"));result.add(u);}PageBean pb = new PageBean();pb.setCurrentPage(pageNo);// 当前页pb.setPageSize(pageSize);pb.setAllRow(topDocs.totalHits);// hit中的记录数目 pb.setList(result);return pb;}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InvalidTokenOffsetsException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}/*** 删除索引* @param userId*/public void deleIndex(String userId){try {File f = new File(dirPath);directory = FSDirectory.open(f);IndexReader reader = IndexReader.open(directory,false); Term term = new Term("userId", userId);reader.deleteDocuments(term);reader.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}高亮设置集成抽取成一个方法public String toHighlighter(Query query,Document doc,String field){ try {SimpleHTMLFormatter simpleHtmlFormatter = new SimpleHTMLFormatter("<font color=\"red\">", "</font>");Highlighter highlighter = newHighlighter(simpleHtmlFormatter,new QueryScorer(query));TokenStream tokenStream1 =analyzer.tokenStream("text",new StringReader(doc.get(field)));String highlighterStr =highlighter.getBestFragment(tokenStream1, doc.get(field));return highlighterStr == null ? doc.get(field):highlighterStr;} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InvalidTokenOffsetsException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

全文检索经典例子
全文检索(Full-text Search)是指在大规模的文本数据集合中,通过快速搜索算法,将用户输入的查询词与文本数据进行匹配,并返回相关的文本结果。

全文检索被广泛应用于各种信息检索系统,如搜索引擎、文档管理系统等。

下面列举了一些经典的全文检索例子,以展示全文检索的应用领域和实际效果。

1. 搜索引擎:全文检索是搜索引擎的核心技术之一。

搜索引擎可以根据用户输入的关键词,在庞大的网页数据集合中快速找到相关的网页,并按照相关度排序呈现给用户。

2. 文档管理系统:在大型企业或机构中,通常需要管理大量的文档和文件。

全文检索可以帮助用户快速找到需要的文档,提高工作效率。

3. 电子商务平台:在线商城通常会有大量的商品信息,用户可以通过全文检索快速找到需要购买的商品,提供更好的购物体验。

4. 社交媒体平台:全文检索可以用于搜索和过滤用户发布的内容,帮助用户找到感兴趣的信息或用户。

5. 新闻媒体网站:新闻网站通常会有大量的新闻报道和文章,全文检索可以帮助用户快速找到感兴趣的新闻内容。

6. 学术文献检索:在学术领域,全文检索可以帮助研究人员找到相关的学术论文和研究成果,促进学术交流和研究进展。

7. 法律文书检索:在法律领域,全文检索可以帮助律师和法官快速搜索和查找相关的法律文书和判例,提供法律支持和参考。

8. 医学文献检索:在医学领域,全文检索可以帮助医生和研究人员找到相关的医学文献和病例,提供医疗决策和研究支持。

9. 电子图书馆:全文检索可以用于电子图书馆中的图书检索,帮助读者找到需要的图书和资料。

10. 代码搜索:开发人员可以使用全文检索工具搜索代码库中的代码片段和函数,提高开发效率和代码重用。

总结来说,全文检索是一种强大的信息检索技术,广泛应用于各个领域。

通过全文检索,用户可以快速找到所需的文本信息,提高工作效率和信息获取的准确性。

随着技术的不断发展,全文检索算法和工具也在不断优化,为用户提供更好的搜索体验。

相关文档
最新文档