当前位置: 首页 > news >正文

网站建设属什么合同wordpress最多文章

网站建设属什么合同,wordpress最多文章,设计网有哪些,网站信息内容建设局通报本文是我们名为“ Apache Lucene基础知识 ”的学院课程的一部分。 在本课程中#xff0c;您将了解Lucene。 您将了解为什么这样的库很重要#xff0c;然后了解Lucene中搜索的工作方式。 此外#xff0c;您将学习如何将Lucene Search集成到您自己的应用程序中#xff0c;以… 本文是我们名为“ Apache Lucene基础知识 ”的学院课程的一部分。 在本课程中您将了解Lucene。 您将了解为什么这样的库很重要然后了解Lucene中搜索的工作方式。 此外您将学习如何将Lucene Search集成到您自己的应用程序中以提供强大的搜索功能。 在这里查看 目录 1.信息超载/爆炸 2.索引非结构化数据的组件 3.数据搜索的组成部分 4.使用Apache Lucene的简单搜索应用程序 5.下载源代码 1.信息超载/爆炸 如今应用程序中的搜索功能正变得越来越重要。 毕竟Web仅仅与信息有关而所有与在正确的时间和正确的手中获取信息有关。 信息爆炸的形式是现代世界中已发布的数字信息量Swift增加以及大量原始数据和非结构化数据的影响。 这种信息爆炸导致我们所有人的信息过载持续不断。 现在信息超载已成为世界各地办事处中的普遍现象。 一些原因包括 广泛访问网络 向大量人发送电子邮件的简便性 由于可以免费复制信息因此制作更多副本没有可变成本–人们将报告和信息发送给可能需要知道而不是绝对需要知道的人。 信息源创建不当尤其是在线这些信息源 没有简化或过滤以使其更短 没有清楚地写出来所以人们不得不花更多的时间来理解它们 包含事实错误或不一致之处-需要进一步研究 解 尽管没有上述问题的简单且单一的解决方案但是可以使用一些方法来缓解该问题。 这些包括 花更少的时间来获取“很想知道”的信息而将更多的时间花在我们“现在需要知道”的事情上。 关注信息的质量而不是数量。 简短的简短电子邮件比长长的电子邮件更有价值。 学习如何创建更好的信息。 直截了当地询问我们的要求以便他们提供准确的答案。 单任务使头脑一次专注于一个问题。 现在除此以外我们还可以使用开源搜索库Apache Lucene实现信息检索解决方案只要我们可以从内容存储库中获取文本数据它就可以从此类非结构化内容中检索信息。 搜索应用程序的简短概述 将文件存储在文件系统中。 在存储文件时我们需要在Lucene索引中将文件添加为文档。 在删除文件时我们将需要从相应的Lucene索引中删除文件的条目。 使用Lucene标准分析器分析文档我们可以使用可插入Lucene的其他几种分析器 使用额外的字段例如文档中的文件路径更新Lucene索引。 从Lucene标准分析开始搜索 与针对数百万个文档的关系数据库搜索相比我们可以以大大提高的速度获得此类搜索的结果。 现在如果我们在Lucene索引存储库中的文件系统中具有该文件的链接就可以对其进行浏览-这可能是我们的应用目标之一。 当然以上用例并不是从庞大的信息存储库中所有基于文本的搜索和信息检索的唯一解决方案。 一个普通的数据库搜索功能在某些情况下就足够了。 其他工具例如Apache Hadoop对数据处理的要求也是可行的选择。 2.索引非结构化数据的组件 索引组件维护文件的目录这些目录可供用户检索文件。 索引组件是一项可选功能应安装在用户可以访问以进行文件检索的任何服务器上。 索引组件支持按文件文件版本和近期活动进行搜索。 让我们研究与Lucene Indexing相关的一些术语 索引实体 存储在Lucene索引存储库中的那些文件或信息称为索引实体。 每个Lucene索引由一个由名称唯一标识的索引管理器管理。 在大多数情况下索引实体和单个IndexManager之间也存在一对一的关系管理索引。 索引分片和索引共享的用例除外。 当单个实体的索引太大而索引操作使应用程序变慢时可以应用前者。 在这种情况下单个实体被索引为多个索引每个索引都有自己的索引管理器。 后者是索引共享是将多个实体索引到同一个Lucene索引中的功能。 分片索引 在某些情况下将给定实体的索引数据拆分分片为多个Lucene索引可能很有用。 分片的可能用例是 单个索引是如此之大以至于索引更新时间使应用程序变慢。 典型的搜索只会命中索引的子集例如当数据按客户地区或应用程序自然细分时。 共享索引 从技术上讲可以将多个实体的信息存储到单个Lucene索引中。 有两种方法可以实现此目的 配置基础目录提供程序以指向相同的物理索引目录。 对于家具和动物实体我们应该使用相同的索引目录。 我们只是将两个实体的indexName设置为“ Animal”。 然后两个实体都将存储在Animal目录中。 将要合并的实体的Indexed批注的index属性设置为相同的值。 如果我们再次希望将所有Furniture实例以及所有Animal实例一起编入Animal索引中我们将在Animal和Furniture类上都指定Indexed(indexAnimal) 。 3.数据搜索的组成部分 核心索引类 Lucene之所以能够获得快速的搜索响应是因为它不是直接搜索文本而是搜索索引。 这相当于通过搜索书后的索引来检索与关键字相关的书中的页面而不是在书的每一页中搜索单词。 这种类型的索引称为反向索引因为它会将以页面为中心的数据结构页面-单词转换为以关键字为中心的数据结构单词-页面。 我们可以相应地整理核心索引类 索引作家 目录 分析仪 文献 领域 要创建索引首先要做的是创建一个IndexWriter对象。 IndexWriter对象用于创建索引并向该索引添加新的索引条目即Documents。 您可以创建一个IndexWriter 如下所示 IndexWriter indexWriter new IndexWriter(index-directory, new StandardAnalyzer(), true); 第一个参数指定将在其中创建Lucene索引的目录在本例中为index-directory。 第二个参数指定在Lucene索引数据时将使用的“文档解析器”或“文档分析器”。 在这里我们为此使用StandardAnalyzer 。 有关Lucene分析仪的更多详细信息将很快出现。 第三个参数告诉Lucene如果尚未在目录中创建索引则创建一个新索引。 文档是索引和搜索过程的单位。 字段是Lucene的实际内容所有者。 它们基本上是一个具有名称和值的哈希表。 IndexWriter创建并维护索引。 构造函数的create参数确定是创建新索引还是打开现有索引。 即使读者正在使用索引我们也可以使用“ create true”打开索引。 旧的读者将继续搜索他们已打开的“时间点”快照直到重新打开它们才能看到新创建的索引。 还有一些没有create参数的构造函数如果提供的路径上没有索引则将创建一个新索引否则将打开现有索引。 自上次刷新以来以较早者为准在上述方法调用过程中所做的更改将被缓冲在内存中并在有足够的缓冲删除或添加的文档时触发刷新。 冲洗也可以被强制调用。 发生刷新时未完成的删除和添加的文档都将刷新到索引。 刷新也可能触发一个或多个段合并。 构造函数的可选autoCommit参数控制对读取相同索引的IndexReader实例IndexReader更改的可见性。 如果为false则在调用close()之前看不到更改。 更改仍将作为新文件刷新到目录中但不会被提交不会调用新文件写入新的segment_N文件直到调用close()为止。 如果在close() 之前发生了严重错误例如JVM崩溃则索引将不反映所做的任何更改它将保持其初始状态。 我们还可以调用abort() 它在不进行任何更改的情况下关闭编写器并删除所有已刷新但现在未引用的索引文件。 此模式对于防止读者在不好的时间刷新例如在完成所有删除之后但在完成添加之前很有用。 它也可以用于实现简单的单作者事务性语义“全有或全无”。 当autoCommit为true时则每次刷新也是一次提交。 在这种模式下运行时应记住一件事即在进行优化或段合并时读者不应刷新因为这会占用大量磁盘空间。 无论autoCommit如何 IndexReader或IndexSearcher只会在打开索引的“时间点”看到该索引。 打开阅读器后提交给索引的任何更改将不可见直到重新打开阅读器为止。 如果在一段时间内不再添加更多文档并且需要最佳搜索性能则应在关闭索引之前调用优化方法。 打开IndexWriter会为使用中的目录创建一个锁定文件。 尝试在同一目录上打开另一个IndexWriter将导致LockObtainFailedException 。 如果使用同一目录上的IndexReader从索引中删除文档也会引发LockObtainFailedException 。 核心搜索课程 核心搜索类是 IndexSearcher 术语 询问 术语查询 顶级文档 Lucene使用恰当命名的IndexReader实例从索引中读取数据。 Lucene提供了执行实际搜索的IndexSearcher类。 每个索引搜索器都包装一个索引读取器以获取索引数据的句柄。 有了索引搜索器后我们可以为其提供查询并按得分顺序枚举结果。 在索引搜索器中除了阅读器之外没有其他东西可以配置。 IndexSearcher实例完全是线程安全的这意味着多个线程可以同时调用其任何方法。 如果应用程序需要外部同步则无需在IndexSearcher实例上进行同步。 我们可以使用我们自己的非Lucene对象。 这是IndexReader类的语法 IndexSearcher is new IndexSearcher(path); 查询分为术语和运算符。 术语有两种类型“单个术语”和“短语”。 单个术语是一个单词例如“ test”或“ hello”。 词组是由双引号括起来的一组单词例如“ hello User”。 可以将多个术语与布尔运算符组合在一起以形成更复杂的查询。 Lucene支持字段数据Search Lucene API模块经常在分面搜索中使用这些数据。 默认情况下Search Lucene API搜索内容字段。 但是您可以通过键入字段名称后跟冒号“”和我们要查找的术语来搜索特定字段中的数据。 例如如果我们搜索名为“ The Right Way”的节点其中包含文本“ go”则可以输入 title:The Right Way AND contents:go 要么 title:The Right Way AND go 由于内容是默认字段因此不需要字段指示符。 该字段仅对其直接在前的术语有效因此查询 title:Right Way 只会在标题字段中找到“右”。 它将尝试在默认字段本例中为内容字段中查找“ way”。 下面列出了所有可用的字段类型 未储存 关键词 未索引 文本 二元 TopDocs是文档的集合这些文档在使用查询字符串进行搜索后进行了排序。 最匹配的文档在TopDocs顶部列出。 对于搜索操作需要一个IndexSearcher类该类实现了主要的搜索方法。 对于每次搜索都需要一个新的Query对象并且可以从QueryParser实例中获得该对象。 请注意必须使用与创建索引相同的分析器类型来创建QueryParser 在本例中为SimpleAnalyzer 。 根据JavaDocsVersion也用作构造函数参数并且是一个“被某些类用来在Lucene的各个发行版之间匹配版本兼容性”的类。 当由IndexSearcher执行搜索时将作为执行结果返回TopDocs对象。 此类仅表示搜索结果并允许我们检索ScoreDoc对象。 使用ScoreDocs我们找到符合搜索条件的文档然后从这些文档中检索所需的信息。 让我们看看所有这些都在起作用。 4.使用Apache Lucene的简单搜索应用程序 在开始我们的第一个搜索应用程序之前我们必须下载最新版本的Lucene。 我们已经下载了4.6版的Lucene jar文件。 接下来我们必须构建一个名为“ LuceneWink”的项目并将jar文件添加到该项目的类路径中。 在开始运行搜索查询之前我们需要构建一个索引将针对该索引执行查询。 这将在名为IndexWriter的类的帮助下完成该类是创建和维护索引的类。 IndexWriter接收文档作为输入其中文档是索引和搜索的单位。 每个Document实际上是一组字段并且每个字段都有一个名称和一个文本值。 要创建IndexWriter 需要一个分析器。 此类是抽象的我们将使用的具体实现是SimpleAnalyzer 。 我们将尝试找出包含将在以下应用程序中作为查询提供的字符串的文件。 因此我们必须建立文件索引并在文件上进行搜索然后在其中进行搜索操作。 这是示例程序注释以内联方式给出 package com.wf.lucene;import java.io.File; import java.io.FileReader; import java.util.ArrayList;import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.apache.lucene.document.StringField; import org.apache.lucene.document.TextField; import org.apache.lucene.index.DirectoryReader; import org.apache.lucene.index.IndexReader; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.index.IndexWriterConfig; import org.apache.lucene.queryparser.classic.QueryParser; import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.search.Query; import org.apache.lucene.search.ScoreDoc; import org.apache.lucene.search.TopScoreDocCollector; import org.apache.lucene.store.FSDirectory; import org.apache.lucene.util.Version;public class LuceneOnFileSystemExample {static String DATA_FOLDER /home/piyas/Documents/Winkframe/sample_text_files/drugs/; // Where the files are.static String INDEX_FOLDER /home/piyas/Documents/Winkframe/sample_text_files/drugindex/; // Where the Index files are.private static StandardAnalyzer analyzer new StandardAnalyzer(Version.LUCENE_46);private static IndexWriter writer;private static ArrayListFile queue new ArrayListFile();public static void indexFilesAndShowResults(String dataFilePath,String indexFilePath,String searchTerm) throws Exception {// Indexing partindexOnThisPath(indexFilePath); // Function for setting the Index PathindexFileOrDirectory(dataFilePath); // Indexing the filescloseIndex(); //Function for closing the files// Search PartsearchInIndexAndShowResult(indexFilePath, searchTerm);}public static void searchInIndexAndShowResult(String indexFilePath,String searchString) throws Exception{IndexReader reader DirectoryReader.open(FSDirectory.open(new File(indexFilePath))); // The api call to read the indexIndexSearcher searcher new IndexSearcher(reader); // The Index Searcher ComponentTopScoreDocCollector collector TopScoreDocCollector.create(5, true);Query q new QueryParser(Version.LUCENE_46, contents, analyzer).parse(searchString);searcher.search(q, collector);ScoreDoc[] hits collector.topDocs().scoreDocs;// display resultsSystem.out.println(Found hits.length hits.);for(int i0;ihits.length;i) {int docId hits[i].doc;Document d searcher.doc(docId);System.out.println((i 1) . d.get(path) score hits[i].score); // Found the document}}public static void closeIndex() throws Exception {writer.close(); // Close the Index}public static void indexOnThisPath(String indexDir) throws Exception {// the boolean true parameter means to create a new index everytime,// potentially overwriting any existing files there.FSDirectory dir FSDirectory.open(new File(indexDir));IndexWriterConfig config new IndexWriterConfig(Version.LUCENE_46, analyzer);writer new IndexWriter(dir, config);}/*** Indexes a file or directory* param fileName the name of a text file or a folder we wish to add to the index* throws java.io.IOException when exception*/public static void indexFileOrDirectory(String filePath) throws Exception {// Adding the files in lucene index////gets the list of files in a folder (if user has submitted//the name of a folder)//addFiles(new File(filePath));int originalNumDocs writer.numDocs();for (File f : queue) {FileReader fr null;try {Document doc new Document();//// add contents of file//fr new FileReader(f);doc.add(new TextField(contents, fr));doc.add(new StringField(path, f.getPath(), Field.Store.YES));doc.add(new StringField(filename, f.getName(), Field.Store.YES));writer.addDocument(doc);System.out.println(Added: f);} catch (Exception e) {System.out.println(Could not add: f);} finally {fr.close();}}int newNumDocs writer.numDocs();System.out.println();System.out.println(************************);System.out.println((newNumDocs - originalNumDocs) documents added.);System.out.println(************************);queue.clear();}private static void addFiles(File file) {if (!file.exists()) {System.out.println(file does not exist.);}if (file.isDirectory()) {for (File f : file.listFiles()) {addFiles(f);}} else {String filename file.getName().toLowerCase();//// Only index text files//if (filename.endsWith(.htm) || filename.endsWith(.html) ||filename.endsWith(.xml) || filename.endsWith(.txt)) {queue.add(file);} else {System.out.println(Skipped filename);}}}/*** param args*/public static void main(String[] args) {// TODO Auto-generated method stubtry{indexFilesAndShowResults(DATA_FOLDER,INDEX_FOLDER,HIV); // Indexing files and Searching the word from files.}catch(Exception e){e.printStackTrace();}}} 本文随附了示例应用程序。 我们提供索引目录搜索查询字符串和最大匹配数然后调用searchIndex方法。 在该方法中我们创建一个IndexSearcher QueryParser和Query对象。 请注意 QueryParser使用了我们用于使用IndexWriter创建文档的字段的名称“内容”并且再次使用了相同类型的分析器 SimpleAnalyzer 。 我们执行搜索并为找到匹配项的每个Document提取包含文件名“ filename”的字段的值然后进行打印。 在这里我们使用Apache Lucene创建了一个简单的搜索应用程序。 在下一篇文章中我们将使用更高级的查询以及Lucene索引和搜索的其他高级选项。 5.下载源代码 您可以下载源代码 在这里和数据归档在这里 。 翻译自: https://www.javacodegeeks.com/2015/09/lucene-components-overview.html
http://www.sadfv.cn/news/260308/

相关文章:

  • 手机网站宽度是多少lovevideo门户视频wordpress主题
  • 网站 关键词 多少个去掉网址中的wordpress
  • 网站移动终端建设工作室建设规划
  • 局域网 手机网站建设海南新闻在线中心
  • php网站后台页面国网电子商务平台官网
  • wordpress 段代码百度seo优化教程免费
  • 益阳市 网站建设互联网企业网站
  • 怎么建设推广网站网站开发项目私活
  • 网站qq弹窗介绍做素食的网站
  • 西昌市建设工程管理局网站住建局查询房产信息
  • 怎样做淘宝联盟的网站网站模版如何去除title版权信息
  • 电子商务网站建设前期专业网站设计公司哪家好
  • 如何运营网站建设网站的价值
  • 网站可以做软著吗wordpress 图片模板
  • 建设网站是否应当摊销wordpress用户组权限
  • 怎么用阿里云建设网站网络规划设计师估分
  • 常见网站开发的语言怎么做新网站
  • 几十万做网站平台学校网站建设配套制度
  • 魔兽世界 建设公会网站中国职业技能培训中心官网
  • 网站敏感字东莞建筑设计院排名
  • 西安谁家做网站做一个网站要注意什么东西
  • 网站域名被注销中信建设有限责任公司发债公告
  • 郑州企业的网站建设甘肃兰州大学
  • 建个站的免费网站能上百度吗长沙网站搭建首选智投未来
  • 南山高端网站建设可以下载的网站模板吗
  • 装饰公司手机网站网站的描述
  • 宁波网站建设果核校园门户网站建设特点
  • layui做移动网站外贸set是什么意思
  • 博罗中山网站建设可口可乐的网站建设
  • 关于网站开发的参考文献有哪些360网站空间