Web开发网 > 站内搜索 > json.net
c;3using System.Text;456namespace TestLucene7{8 using Lucene.Net .Index;9 using Lucene.Net .Store;10 using Lucene.Net .Analysis;11 using Lucene.Net .Analysis.Standard;12 using Lucene.Net .Documents;13 using Lucene.Net .Search;14 using Lucene.Net .QueryParsers;1516 class Program17 {18 static void Main(strinhttp://www.w3dev.cn/article/20090901/971.aspx
Lucene.Net 中,分词是核心库之一,当然,也可以将它独立出来。目前Lucene.Net 的分词库很不完善,实际应用价值不高。唯一能用在实际场合的StandardAnalyzer类,效果也不是很好。内置在Lucene.Net 里的分词都被放在项目的Analysis目录下,也就是Lucene.Net .Analysis命名空间下。分词类的命名一般都是以“Analyzer”结束,比如StandardAnalyzer,StopAnalyzer,SimpleAnalyzer等。全部继承自Analyzer类。而它们一般各有一个辅助类,一般以”“Tokenizer”结尾,分词的逻辑大都在辅助类完成。使用Luhttp://www.w3dev.cn/article/20090901/972.aspx
的父类是Tokenizer,但是在Tokenizer里找不到我们想要的关系,但是Tokenizer又继承自TokenStream。查看TokenStream类。代码 1.2.1.312using System;34using Payload = Lucene.Net .Index.Payload;56namespace Lucene.Net .Analysis7{8 9 /// summaryA TokenStream enumerates the sequence of tokens, either from10 /// fields of a document or from query tehttp://www.w3dev.cn/article/20090901/973.aspx
如何用Lucene.Net 可以理解的方式写出来,这一步,上面讲了那么多小节,却是三个问题的最简单的一个。2.1.1 最简单的分词方式这里的最简单指的是用最少代码的方式。好,现在来个最简单的,写成代码2.1.1.1的方式总是最简单了吧?代码 2.1.1.1using System;using Lucene.Net .Analysis;namespace Test.Analysis{ public classEsayTokenizer : Tokenizer { }}太好了,终于写出来了,下面包装一下,写个Analyzer类。代码 2.1.1.2using Lucene.Net .Analysis;http://www.w3dev.cn/article/20090901/974.aspx
dardAnalyzer作为分词器已经建立好了索引,接下来,进行查询操作。代码 2.1.2.11using System;2using Lucene.Net .Analysis;3using Lucene.Net .Analysis.Standard;4using Lucene.Net .Documents;5using Lucene.Net .Index;6using Lucene.Net .QueryParsers;7using Lucene.Net .Search;8using NUnit.Framework;9using System.Collections.Generic;1011namesphttp://www.w3dev.cn/article/20090901/975.aspx
Lucene.Net 的上一个版本是2.1,而在2.3.1版本中才引入了Next(Token)方法重载,而ReusableStringReader类也是在新版本中引入的。这样改变,导致了2.3.1版本不得不修改2.1版以前的所有分词器。带来的另外一个问题的是,以前的一些现有分词器,拿到这里可能就不能用了。要使用ReadToEnd还有另外一个解决方法——修改Lucene.Net 源码。在修改之前,我们需要知道ReusableStringReader作为StringReader的子类,为什么让ReadToEnd方法无效了。先查看.Net Framework StringReader源码关于ReadTohttp://www.w3dev.cn/article/20090901/976.aspx
与表达式分词器则是充当了翻译的角色,它是索引文件与查询表达式沟通的桥梁。如果搜索和索引使用不同的分词器,注意,这里要的是分词效果不一样的分词器,那就搜索不到想要的东西。表达式解析器将会通过分词器把一个字符串翻译成搜索懂得语言,然后再到索引文件中进行筛选。4.1.4 Lucene.Net 的搜索流程在Lucene.Net 中,,把构造表达式考虑进去,那么搜索将会要经历:(1)、构造查询表达式;(2)、打开索引文件,IndexSearcher会通过IndexReader类打开索引文件;(3)、得到查询表达式的一个筛选值——Weight;(4)、查询缓冲中是否有适合的记录,如果有则读取,否则扩容,扩容http://www.w3dev.cn/article/20090901/977.aspx
Highlighter.com/-->using System;using System.Collections.Generic;using Lucene.Net .Analysis;using Lucene.Net .Analysis.Standard;using Lucene.Net .Documents;using Lucene.Net .Index;using Lucene.Net .QueryParsers;using Lucene.Net .Search;using NUnit.Framework;namespace Test{ [TestFixture] public classhttp://www.w3dev.cn/article/20090901/978.aspx
PREFIXTERM ...\n WILDTERM ...\n \"[\" ...\n \"{\" ...\n NUMBER ...\n " Source="Lucene.Net" StackTrace: 在 Lucene.Net .QueryParsers.QueryParser.Parse(String query) 位置 D:\Lucene.Net \Lucene.Net \QueryParser\QueryParser.cs:行号 186 在 TestLucene.Program.Main(String[] args) 位置 D:\TestLucene\TestLucene\TestLucehttp://www.w3dev.cn/article/20090901/979.aspx
则表示存储向量。2.6 索引核心类工作流程图 2.6.1图 2.6.1如图2.6.1表示了数据在Lucene.Net 索引过程处理的整个流程。注意,这个流程图中,分词器并不直接产生Field对象,在实例中Analyzer是被赋予IndexWriter实例的,等等执行添加文档操作的时候,IndexWriter才会真正地调用分词器生成Field需要的数据(在DocumentWriter类中)。上图只是反映了数据是如何流动的,并不是真实的调用过程。如图2.6.1表示了数据在Lucene.Net 索引过程处理的整个流程。注意,这个流程图中,分词器并不直接产生Field对象,在实例中Analyzer是被赋予http://www.w3dev.cn/article/20090901/980.aspx
art;iend;i++){Lucene.Net .Documents.Documentdoc=hits.Doc(i);System.Stringtext=doc.Get("content");//添加结尾,保证结尾特殊符号不被过滤stringtitle=doc.Get("title")+"+aaaaaaaaa";Lucene.Net .Analysis.TokenStreamtokenStream=highanalyzer.TokenStream("content",newSystem.IO.StringReader(text));Lucene.Net .Analysis.TokenStreamhttp://www.w3dev.cn/article/20090901/998.aspx
.com/download/6/5/c/65cad864-54a5-463a-9573-bc7d0bbc1df9/ASPNetExt.exe当然,安装之前必须安装VS2008。安装完后可以在创建项目的地方增加以下两种项目。一种是“ASP.NET MVC Web Application and Test”会同时创建MVC项目和一个测试项目,一个是ASP.NET MVC Web Application,只会纯粹的建立MVC项目。而在项目中引用新文件的时候,也会增加MVC的页面。在创建MVC项目以后,会增加以下文件访问的机制是通过URL重写实现的。因此,你需要设置IIS映射。MVC是通过HttpMhttp://www.w3dev.cn/article/20090901/1002.aspx
ile(token!=null)30{31Console.WriteLine(token.TermText()+"\t"+token.StartOffset()+"\t"+token.EndOffset());32token=t.Next();33}34t.Close();35}在Lucene.Net 索引或者搜索中直接使用YurowAnalyzer.YurowAnalyzer分析器。下载地址:http://files.cnblogs.com/birdshover/YurowAnalyzer.rar下面贴上些关键源码:Participle类(分词类)12publicListintStartAhttp://www.w3dev.cn/article/20090901/1005.aspx
e.Net 是Lucene在dot net 平台上的移植版本。它的功能与Lucene一样,都是用来提供一组API,让我们能快速开发自己的搜索引擎,当然,是全文搜索。它不是一个程序,拿到它并不能立刻运行,你必须自己实现逻辑过程。这是一个和.Net Framework一样的框架。Lucene是用Java写的,尔后衍生出Nutch,接着又衍生出Hadoop。这些可以说和Lucene没有内在联系,但是它们可以扩充Lucene的应用规模。目前,在dot net 平台,还没发现有Nutch和Hadoop的移植程序。不过有了Lucene.Net 就该庆幸了,已经能够做很多事情。Lucene和Lucene.Net 目前http://www.w3dev.cn/article/20090901/1006.aspx
ed? 为什么没有结果?分词器写错了?不要灰心!让我们来分析一下。在DoubleTokenizer类构造函数下一个断点,调试。因为,如果能正确运行,这个构造函数肯定要进入的。调试后看到了什么?传入的TextReader的类型是Lucene.Net .Index.DocumentsWriter.ReusableStringReader。查看Lucene.Net .Index.DocumentsWriter.ReusableStringReader类的定义,它继承自StringReader类,但是它重写掉了一些方法,而且,我们并没有发现我们使用的ReadToEnd方法。问题可能出在这里。看到Reushttp://www.w3dev.cn/article/20090901/1007.aspx
存储结构词在倒排索引中是最小的单位,在Lucene.Net 中衡量单位是Term,由N个Term构成了Filed,而又有N个Filed组成了Document,N个Document又会组成一个Segment,N个Segment会被写到Lucene.Net 的文件系统。文件系统留到后面再讲,因为Lucene.Net 自己实现了自己的文件系统,而这个系统的最小单位由3个文件组成,可以放到一个目录下,也可以放到内存中。总的来说Lucene.Net 的文件系统可以理解为一个个的文件,在Windows下就是一个目录,里面包含了三个文件,但是从Lucene.Net 的逻辑上来说,这就是一个文件。然后文件里的文本分词Nhttp://www.w3dev.cn/article/20090901/1008.aspx
ressionAdapter。在Lucene.Net 中内置了一个“SharpZipLibAdapter”,但是需要有编译符号SHARP_ZIP_LIB才能编译进去。为了看看效果,所以给项目添加SHARP_ZIP_LIB符号,然后增加app.config配置文件,在appseting中添加Lucene.Net .CompressionLib.class键,值是SharpZipLibAdapter。然后下载 ICSharpCode.SharpZipLib.dll,这个dll才是真正实现压缩算法的。下载地址: http://sourceforge.net /project/downloading.phhttp://www.w3dev.cn/article/20090901/1009.aspx
e.Net 中怎么调整权重呢?在不修改评分公式的前提下,可以通过设置Boost来控制权重的值。这个过程在索引文档的时候就进行了,一旦文档被写入,这个值就不可更改了,除非删了重新建一个。调整权重也有两种调法,来仔细分析下设置权重如何影响排序的。 2.1 Document的boost对以前的代码做个修改,变成代码2.1.1。代码2.1.1 +展开-C#1usingSystem;2usingSystem.Collections.Generic;3usingLucene.Net .Analysis;4usingLucene.Net .Analysis.Standard;5usingLucene.Net .Dhttp://www.w3dev.cn/article/20090901/1010.aspx
1.5 代码2.1.5 +展开-C#1usingSystem;2usingSystem.Collections.Generic;3usingLucene.Net .Analysis;4usingLucene.Net .Analysis.Standard;5usingLucene.Net .Documents;6usingLucene.Net .Index;7usingLucene.Net .QueryParsers;8usingLucene.Net .Search;9usingNUnit.Framework;1011namespaceTest12{13[TestFixture]14publicclasshttp://www.w3dev.cn/article/20090901/1011.aspx
个点有什么用呢? 现在来做个假设,假设,现在有一条记录是关于Lucene的,这篇文章讲得很好,我想要让别人搜索Lucene这个关键字的时候,这条记录一定排在前10。怎么办?设置Docuement的Boost?设置得还很高?OK!这篇文章里面也有其他关键字,比如"asp.net ","Sql Server"。现在搜索"asp.net ",发现这篇文章也跑到前10了。这可不是我想要的。 怎么办呢? 现在有两个解决办法,一个就是冗余一个Field,里面记录了Tag一类的东西,给这篇文章设置Tag值为“Lucene”,同时在索引tag字段的时候把它的Boost调高。比如代码2.2.1,在添加完文档后把该文http://www.w3dev.cn/article/20090901/1012.aspx
更新都能及时反映到索引当中,站内搜索引擎一般都会面临这样的问题。Lucene.Net 已经为我们提供了实现的方法,至于实现的逻辑需要你去思考。6、索引小节本篇文章是索引部分的完结篇。从第一篇到这里第七篇,主要介绍了两个东西,一个是Lucene.Net 的逻辑存储,另外一个就是如何操作逻辑存储。在逻辑存储上讲得比较详细,特别是关于权重部分,而操作则只简单提一下。因为,逻辑存储有助于理解Lucene.Net 索引的流程,而操作则只是相当于CPU的指令,业务逻辑需要自己去实现。相信看了以上七篇文章,有助于对Lucene.Net 索引的理解,当然,这里只讲了表面上的东西,更加深入地理解Lucene需要从更加http://www.w3dev.cn/article/20090901/1013.aspx
可以从官方网站下载。下载地址:http://tortoisesvn.net /downloads。下载完成,就安装,需要重启电脑。然后在d盘下建立一个空文件夹,命名为Lucene.Net 。打开文件夹,右键,则出现菜单。如图"附录一 1"。附录一 1发现多了两项,分别是SVN Checkout和TortoiseSVN。点“SVN Checkout”,出现“附录一 2”界面。附录一 2在URL of repository框输入https://svn.apache.org/repos/asf/incubator/lucene.net /trunk/,然后点OK,就可以下载到最新版本。历史版本在httphttp://www.w3dev.cn/article/20090901/1014.aspx
Net 2.3.1开发介绍 —— 简介 Lucene.Net 2.3.1开发介绍 —— 一、接触Lucene.Net Lucene.Net 2.3.1开发介绍 —— 二、分词(一) 本篇介绍了如何测试分词器的效果,并且简单测试了一下Lucene.Net 内置分词器的效果。Lucene.Net 2.3.1开发介绍 —— 二、分词(二) 本篇介绍Lucene.Net 的分词过程,分析最懒惰的什么也不做的KeywordAnalyzer分词器和只用空格分词的WhitespaceAnalyzer分词器。然后粗略得到Lucene.Net 的分词流程和如何简单的分词,这些是自己写分词器的基础。Lucene.Net http://www.w3dev.cn/article/20090901/1015.aspx
255,和15做与运算,还是能够大于9。这是Java与.net 的差异造成的。Java中的byte范围是-128~127,也就是说Java中的byte类型是有符号的,而.net 中的byte类型是无符号的。java中的byte应该与.net 中的sbyte相对应。Java代码原本限制出现该错误的逻辑,移植到.net 版本可能会无效。这里就造成了引发这个异常的原因。以上属个人推测。二、解决办法暂时没有太好的办法能够解决这个问题。1、在Lucene 2.4版本中DocumentWriter已经进行了大改造,再翻译过来可能不会有这种问题。但是等.net 版本更新到那个版本估计还要很长时间。2、还有就是把现在使http://www.w3dev.cn/article/20090901/1017.aspx
今天群里有个朋友问"如何按类别统计搜索结果数?是不是要循环一个个类别去查询出总数啊?"以Lucene.Net 现在的API,只能这样做。当然这样做一般会带来性能问题,所以更好的解决方案就是改动库文件了。 注意:本文内容仅适用于Lucene.Net ,以2.1版为例,其它版本可能会有出入,Java版本差别更大一些。改动库先要有个思路。Lucene.Net 的查询结果是一个Hits,而它有一个方法length可以得到总的结果。这个结果是一个精确值。这个值实际上是在TopDocCollector类的Collect方法计算出来的。要改精算为估算也就是在这里添加算法就可以了。 Code highlighthttp://www.w3dev.cn/article/20090901/1018.aspx
本文简单介绍Lucene.Net 实现GroupBy效果的方法,与《Lucene.Net 按类别统计搜索结果数》一文类似。注意,这种使用方法很影响效率,特别是命中结果多的情况下。这段代码修正自2.3.1版本,其它版本可能会与此有差别。改造方法仍然是修改IndexSearcher,这里不再修改类库,而是通过自己的代码来实现。扩充IndexSearcher类Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->///summary///增加了GroupBy功能http://www.w3dev.cn/article/20090901/1019.aspx
前段时间单位的服务器上被人上传了一个.NET 木马,,这次让我认识到以前没有见过的上传木马的招数,,同时也找出一些对策,,咱落伍论坛很多都有服务器的,,就分享出来给大家吧。.net 木马目前很强的,下载地址://download/20090831/76.aspx(你可以上传到你的服务器上看看对你的系统都能做什么)此木马是一个.NET 程序制作,如果你的服务器支持.NET 那就要注意了,,进入木马有个功能叫:IIS Spy,点击以后可以看到所有站点所在的物理路径。以前有很多人提出过,但一直没有人给解决的答案。。防御方法:“%SystemRoot%/ServicePackFiles/i386/activehttp://www.w3dev.cn/article/20090831/886.aspx
semblyName,命名空间为:AuthorizationNameSpace。+展开-C#classAuthorizationModule:IAuthorizeRemotingConnection{publicboolIsConnectingEndPointAuthorized(System.Net .EndPointendPoint){//验证IP地址代码.....returntrue;}publicboolIsConnectingIdentityAuthorized(IIdentityidentity){//Windows用户名identity.Name//Windows用户验证代码..http://www.w3dev.cn/article/20090831/894.aspx
使用 TCP 信道进行身份验证TCP 信道直接支持身份验证和模拟。本主题介绍如何配置客户端和服务器信道。通过设置关联的 TcpServerChannel 和 TcpClientChannel 对象的属性,.NET Framework 允许远程对象的服务器对调用方进行身份验证和模拟。服务器配置若要配置 TCP 服务器信道以对远程调用方进行身份验证,请将 TCP 信道上的 secure 属性设置为 true,如下面的配置文件所示。+展开-XML?xmlversion="1.0"encoding="utf-8"?>configurationsystem.runtime.remotingapplichttp://www.w3dev.cn/article/20090831/895.aspx
atch(htmlBody)){json ="{success:true,weathers:[{d:'"+DateTime.Now.ToString("yyyy-MM-dd")+"'";Matchm=r.Match(htmlBody);json +=",weather:'"+m.Groups[2].Value+"'";r=newRegex("div\\s+class=\"w-number\"([\\s\\S]+?)/div",RegexOptions.IgnoreCase|RegexOptions.Compiled);m=r.Match(htmlBody);json +=",tmp:'"+Removhttp://www.w3dev.cn/article/20090825/866.aspx
首页 上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] 下一页 尾页 14/16页,每页显示30条,共474条相关记录