专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅
前面的文章,我们已经对要检索的数据创建了索引,现在要做的就是为用户提供全文搜索的功能。通过Lucene我们还可以简单而高效地对搜索结果进行访问。此文和大家简单的说说利用Lucene.net进行数据的搜索。当我们查询Lucene的一个索引时,Lucene会返回一个有序的Hits对象集合(collection)Lucene使用默认的评分方式对该集合内的对象按照其得分高低进行排序。对于一个给定的查询,Lucene为每个文档计算一个评分(即一个表示相关性的数值)。Hits本身不是实际的匹配文档集,只是指向这些匹配文档的引用(reference)。Lucene.net中处理检索的核心API:类用 [阅读全文] [PDF]
  而PHP就这两个思路方法实现对Lucene从而达到全文检索目   PHP思路方法如下:   先创建个我们写TxtFileIndexer类例子   $tf = Java('TestLucene.TxtFileIndexer');   然后就按正常PHP类思路方法方式进行首先创建索引:   $data_path = "F:/test/php_lucene/htdocs/data/manual"; //定义被索引内容目录   $index_path = "F:/test/php_lucene/htdocs/data/search"; //定义生成索引文件存放目录   $ [阅读全文] [PDF]
  今天群里有个朋友问"如何按类别统计搜索结果数?是不是要循环个个类别去查询出总数啊?"  以Lucene.Net现在API只能这样做当然这样做般会带来性能问题所以更好解决方案就是改动库文件了  注意:本文内容仅适用于Lucene.Net以2.1版为例其它版本可能会有出入Java版本差别更大些  改动库先要有个思路Lucene.Net查询结果是个Hits,而它有个思路方法length可以得到总结果这个结果是个精确值这个值实际上是在TopDocCollector类Collect思路方法计算出来要改精算为估算也就是在这里添加算法就可以了     publicov [阅读全文] [PDF]
  1、引用Lucene.Net类库  找到Lucene.Net源代码在“C#srcLucene.Net”目录打开Visual Studio我版本是2008而Lucene.Net默认是2005先创建个项目简单起见创建个C#控制台   Document;45    //  document.Add( Field("title", title, Field.Store.YES, Field.Index.TOKENIZED));46    //  document.Add( Field("content", content, Field.S [阅读全文] [PDF]
  Lucene.Net中分词是核心库的当然也可以将它独立出来目前Lucene.Net分词库很不完善实际应用价值不高唯能用在实际场合StandardAnalyzer类效果也不是很好内置在Lucene.Net里分词都被放在项目Analysis目录下也就是Lucene.Net.Analysis命名空间下分词类命名般都是以“Analyzer”结束比如StandardAnalyzerStopAnalyzerSimpleAnalyzer等全部继承自Analyzer类而它们般各有个辅助类般以”“Tokenizer&rdqu [阅读全文] [PDF]
  1.2、分词过程  1.2.1、分词器工作过程  内置分词器效果都不好那如何办?只能自己写了!在写的前当然是要先看看内置分词器是如何实现了从1.1分析分词效果可以看出KeywordAnalyzer这个分词器最懒惰基本什么事情也没做并不是它不会做而是我们没找到使用它思路方法就像手上拿着个盒子不知道里面是什么就不知道这个是干嘛有什么用打开盒子那就是要查看源代码了!  代码 1.2.1.1  Code1using ;23 Lucene.Net.Analysis4{5  6  /**//// summary "Tokenizes" the entire stre [阅读全文] [PDF]
  1.3 分词器结构  1.3.1 分词器整体结构  从1.2节分析终于做到了管中窥豹现在在Lucene.Net项目中添加个类关系图把TokenStream和他儿孙们统统拉上去就能比较好把握他们的间关系}  就什么都没了要是两个都是true,会得什么结果呢? [阅读全文] [PDF]
  2.1.2可以使用内置分词  简单分词方式并不能满足需求前文说过Lucene.Net内置分词中StandardAnalyzer分词还算比较实用(见1.1.2小节)StandardAnalyzer为什么能满足我们部分需求而它又有哪些不足呢?看分词好坏还是要从效果说起简单说在中英文混合情况下StandardAnalyzer会把英文按空格拆而中文则按单字拆中文是按单字拆所以对分词准确性起到了干扰搜索结果就会不准确至少理论上是这样但是实际上StandardAnalyzer分词器并没有我们想那么差劲搜索不光和分词有关还和查询逻辑有关这个会在第 4章讲搜索时候讲作为 [阅读全文] [PDF]
  2.1.3 2元分词  上节通过变换查询表达式满足了需求但是在实际应用中如果那样查询会出现另外个问题那样搜索是只要出现这个字不管它出现在什么位置这就产生了上小节开头讲对准确性产生了极大干扰比如如果有段这样话:“这是个英雄!他有无法用词汇形容孤单但是他并没有用言语来表达”这句话包含了“英 语 单 词”这 4个字但是却和“英语单词”点关系都没有首先想到解决思路方法就是把句子按词来划分那么就能有效降低干扰最简单解决思路方法莫过于每两个字组成个部分  下面来构造核心算法首先我们期望只有中文( [阅读全文] [PDF]
  Lucene.Net上个版本是2.1而在2.3.1版本中才引入了Next(Token)思路方法重载而ReusableStringReader类也是在新版本中引入这样改变导致了2.3.1版本不得不修改2.1版以前所有分词器带来另外个问题是以前些现有分词器拿到这里可能就不能用了  要使用ReadToEnd还有另外个解决思路方法——修改Lucene.Net源码  在修改的前我们需要知道ReusableStringReader作为StringReader子类为什么让ReadToEnd思路方法无效了先查看.Net Framework Str [阅读全文] [PDF]
  既然是内容筛选或者说是搜索引擎有索引必然要有搜索搜索虽然和索引有关那也只是和索引后文件有关和索引是无关因此搜索和索引般是分开部署简单地说就是个应用(桌面)来索引个WEB来实现搜索当然为了测试时候简单这里还是使用NUnit方式运行搜索讲完后将会简单介绍单机搜索引擎如何部署  4.1 搜索和什么有关  搜索和什么有关呢?即使没有看过前面文章那么现在来随便猜猜  首先搜索定和索引有关如果无关话我们根本不需要建立索引然后搜索肯定和分词有关索引是在分词基础上建立起来还有分词定和查询关键字有关否则如何去搜索呢?搜索确实和上面我们猜到都有关系但是在搜索里分词作用和索引 [阅读全文] [PDF]
  4.3 表达式  用户搜索只会输入个或几个词也可能是句话输入语句是如何变成搜索条件上篇已经略有提及  4.3.1 观察表达式  在研究表达式的前定要知道任何个Query都会对于个表达式不光可以通过Query构造表达式还可以通过拼接串构造这里说观察表达式是指用Query完成查询语句后用思路方法输出Query表达式很简单是吧呵呵  4.3.2 表达式和或非  “和或非”让我想起上学时候学门电路 #先动手看看什么是和或非代码 4.3.2.1using ;using .Collections.Generic;using Lucene.Ne [阅读全文] [PDF]
  Lucene有表达式就有运算符而运算符使用起来确实很方便但另外个问题来了  代码 4.3.4.1Analyzer analyzer = StandardAnalyzer;QueryParser parser = QueryParser("title", analyzer);Query query = parser.Parse(@":");Console.WriteLine("--" + query. + "--");Console.ReadKey;  运行代码4.3.4.1,发现会引发  未处理 Lucene.Net.QueryParsers.Par [阅读全文] [PDF]
  很多文章提到 Lucene.Net RangeQuery 查询效率非常低下我今天测试了下果然非常低下而且结果也不正确  测试 代码:  索引     public void Index( count)    {      IndexWriter writer = IndexWriter(INDEX_DIR, Lucene.Net.Analysis.SimpleAnalyzer, true);        _Count = count;        Document doc = Document;        for ( i = 0; i c [阅读全文] [PDF]
  Editors note: We are rerunning this Introduction to Lucene that originally ran in July 2003 in honor of the publication of "Lucene in action" by Otis Gospodnetic and Erik Hatcher. To see an example of Lucene in action, take a look at Eriks www.lucenebook.com site.   In order to m [阅读全文] [PDF]
  java 代码packagecom.feedsky.lucene;  importjava.io.StringReader;  importorg.apache.lucene.analysis.Analyzer;  importorg.apache.lucene.analysis.TokenStream;  importorg.apache.lucene.document.Document;  importorg.apache.lucene.document.Field;  importorg.apache.lucene.index.IndexWrite [阅读全文] [PDF]
  org.apache.lucene包是纯java语言全文索引检索工具包  Lucene作者是资深全文索引/检索专家最开始发布在他本人主页上2001年10月贡献给APACHE成为APACHE基金jakarta个子项目lucene广泛用于全文索引/检索项目中目前已经有很多应用搜索功能是基于 Lucene 比如 Eclipse 帮助系统搜索功能Lucene 能够为文本类型数据建立索引所以你只要能把你要索引数据格式转化文本Lucene 就能对你文档进行索引和搜索比如你要对些 HTML 文档PDF 文档进行索引话你就首先需要把 HTML 文档和 PDF 文档转化成 [阅读全文] [PDF]
  Lucene本身StandardAnalyzer提供了中文分词接口,不过其采用为1-gram.  这种分词思路方法虽然不会损失任何索引信息,但是造成索引垃圾太多,用户得到查询结果中垃圾也是很多.  经过认真研究了LuceneAnalysis包,我写了个TjuChineseAnalyzer,效果不错.  简要介绍下:  TjuChineseAnlyzer功能强大,在中文分词方面使用JNIICTCLAS(中国科学院,算法为隐马尔可夫模型)java接口. 所以其在中文方面性能上同和ICTCLAS.其在英文分词上采用了LuceneStopAnalyzer,可以去 [阅读全文] [PDF]
  . 概述  随着系统信息越来越多如何样从这些信息海洋中捞起自己想要那根针就变得非常重要了全文检索是通常用于解决此类问题方案而Lucene则为实现全文检索工具任何应用都可通过嵌入它来实现全文检索   2. 环境搭建  从lucene.apache.org上下载最新版本lucene.jar将此jar作为项目build path那么在项目中就可以直接使用lucene了   3. 使用介绍说明  3.1.    基本概念  这里介绍主要为在使用中经常碰到些概念以大家都比较熟悉数据库来进行类比讲解使用Lucene进行全文检索过程有点类似数据库这个过程table-- [阅读全文] [PDF]
  信息检索过程介绍  全文检索和数据库应用最大区别在于:让最相关头100条结果满足98%以上用户需求  1构建文本库  在开发功能前个信息检索系统需要做些准备工作首先必须要构建个文本数据库这个文本数据库用来保存所有用户可能检索信息  在这些信息基础上确定索引中文本类型文本类型是被系统所认可种信息格式这种格式应当具有可识别冗余程度低特点旦文本模型确定下来后就不应当对其进行大行动  2建立索引  有了这种文本模型后就应该根据数据库内文本建立索引索引可以大大提高信息检索速度目前有许多索引建立方式采用哪种方式取决于信息检索系统规模大型信息检索系统(百度google [阅读全文] [PDF]
1 2 3 > 共53条 分3页