Lucene.net是一个.net下的全文检索类库。配置简单,功能丰富,比较成熟。我在项目中用Lucene.net有一段时间了,这里我把常用一些功能写出来,与大家一起分享。Lucene.net用的是3.0版本,分词采用盘古分词。示例程序用VS2010进行编译。1 索引在做索引时,有些参数是需要配置的,下面介绍下常用的参数配置。1) 数据类型,如整形、时间、字符。每种类型生成的索引方式都是不同的。比如:字符串需要分词,整形数据则不需要。生成索引的方式会影响到检索,如果整形按照字符串的方式生成索引,则比较不容易实现区域检索:如,ID>1000 and ID query = NumericRa Read More
posted @ 2013-12-20 00:06 xingxingxing Views(2195) Comments(6) Diggs(1) Edit
最近项目需要全文检索,所以找了几个开源的.NET检索项目,如:Lucene.net,Sphinx,Hubble.net。最后选择使用Lucene.ne来实现全文检索。至于原因嘛,可以参考下面几点:1) Sphinx性能非常好,而且和Mysql结合的也非常好,但是,我们目前使用的是SqlServer,这个优势我们也就用不着了,关键问题在于,Sphinx需要把整个索引吃到内存中,当索引比较大时,内存会不够,关键是这个问题没有找到合适的解决方案,最后只能舍弃。2) Hubble.net的性能也很好,而且和SqlServer结合的非常好,所以,打算使用Hubble.net,使用时发现,... Read More
posted @ 2013-07-30 21:16 xingxingxing Views(1360) Comments(4) Diggs(0) Edit
最近在看.net单元测试艺术,我也喜欢单元测试,今天介绍一下如何测试异常、如何测试返回值、如何测试模拟对象的参数传递、如何测试数据库访问代码。单元测试框架使用的是NUnit,模拟框架使用的是:Rhino.Mocks。1.测试异常,可以直接对方法进行异常测试,也可以对模拟对象进行异常测试,但是,对模拟对象进行异常测试,很少用,所以,这里就介绍对方法的异常测试。请看如下代码,当用户名为空的时候,抛出异常。 public bool Valid(string userName, string passWord) { if (string.IsNullOr... Read More
posted @ 2014-01-27 03:30 xingxingxing Views(1692) Comments(0) Diggs(0) Edit
最近在看.net单元测试艺术,我也喜欢单元测试,这里写一下如何在测试中使用模拟对象。 开发的过程中,我们都会遇到对象间的依赖,比如依赖数据库或文件,这时,我们需要使用模拟对象,来进行测试,我们可以手写模拟对象,当然也可以使用模拟框架。 假如有这样的一个需求,当用户登陆时,我需要对用户名和密码进行验证,然后再将用户名写入日志中。 public class MyLogin { public ILog Log { get; set; } public bool Valid(string userName, string passWord) { ... Read More
posted @ 2014-01-22 00:46 xingxingxing Views(1387) Comments(1) Diggs(0) Edit
最近在看.net单元测试艺术,我也喜欢单元测试,这里写一下如何在测试中解除对象间的依赖。 假如有这样的一个需求,当用户登陆时,我需要对用户名和密码进行验证,然后再将用户名写入日志中。 public class MyLogin { public bool Valid(string userName, string passWord) { var isValid = userName == "admin" && passWord == "123456"; WriteLog(userName); ... Read More
posted @ 2014-01-21 01:35 xingxingxing Views(1002) Comments(1) Diggs(0) Edit