Lucene.Net。想尝试着给数据库加上全文检索的功能。
早就听说Lucene的API很复杂难用,看了几篇文档之后有了打退堂鼓的念头。。。已经不单单是API的问题了,就那个检索的语法就。。。
这个例子中是这样的。
论坛里也有使用Entity Framework的例子,不过我对两者都不怎么熟悉。。。
这里顺便抱怨一句,之所以使用Linq To SQL少就是因为它的DataContex的生命周期管理比较复杂,网上也有很多相关的讨论。对比我比较熟悉的Nhibernate来说,感觉上new一个DataContex比Get一个Session开销是要大很多的,因为DataContex应该也做了NH中SessionFactory的一些操作。当然这只是我的主观臆测,求指正。
这里。可以通过NH的Interceptor实时的更新index,正是我想要的东西,开工~~~
这里下载到了对应NH2.1的dll。
代码就不贴了,只是照着老莫的例子在我的数据库结构上试了一下。谈一下几个小的感想吧。
一是还不知道怎么取出相关度来,只是看到可以按照相关度排序(Sort类提供的RELEVANCE对象),相比而言,前面提及的Linq to Lucene中通过实现IHit就能得到相关度还是很贴心的。有经验的请指教吧。
二是混合一些字段的全文检索和另一些字段的普通数据库检索,大概是通过在IFullTextQuery上调用SetCriteriaQuery实现的,但是我不会写Criteria啊~~杯具。。。哪天找时间看看LinqToNH是怎么把表达式翻译成Criteria的吧(不过真没有动力,反正NH3里就不用了)
最后,FullTextQuery没有实现Future方法啊?呵呵。