1191
Written by xlingfairy
Tuesday, 19 May 2009 22:30
有关于 Lucene 索引中文,网上的叙述很多,为了一次到位,我直接先择了: ICTCLAS,但是关于用C#接合ICTCLAS和LUCENE的文章并不多。我还是找了个 JAVA版的对着写的如下的代码。
WhitespaceAnalyzer:仅仅是去除空格,对字符没有lowcase化,不支持中文
SimpleAnalyzer:功能强于WhitespaceAnalyzer,将除去letter之外的符号全部过滤掉,并且将所有的字符lowcase化,不支持中文
StopAnalyzer:StopAnalyzer的功能超越了SimpleAnalyzer,在SimpleAnalyzer的基础上
增加了去除StopWords的功能,不支持中文
StandardAnalyzer:英文的处理能力同于StopAnalyzer.支持中文采用的方法为单字切分.
ChineseAnalyzer:来自于Lucene的sand box.性能类似于StandardAnalyzer,缺点是不支持中英文混和分词.
CJKAnalyzer:chedong写的CJKAnalyzer的功能在英文处理上的功能和StandardAnalyzer相同
但是在汉语的分词上,不能过滤掉标点符号,即使用二元切分
譬如你有词典,然后你根据正向最大匹配法或者逆向最大匹配法写了一个分词方法,却想在Lucene中应用,很简单,你只要把他们包装成Lucene的TokenStream就好了
首先要从这里下载 c# 的合适版本:
http://ictclas.org/Down_share.html
把包里的:Data 目录和Configure.xml 放到某个目录下,
实现ICTCLAS的接口:
Last Updated ( Wednesday, 20 May 2009 15:31 )
|
662
Written by xlingfairy
Monday, 18 May 2009 23:58
今天第一次接触 Lucene,对着网上的示例,写了半天,就是调试不通,Field.Text , Field.Keywords 这些东东在 VS 里跟本就点不出来。后来一查,原是 Lucene 的版本问题。
照着JAVA的例子写了个C#的例子出来,感受一把,不过像:Query, QueryParser, MultiFieldQueryParser, BooleanQuery 这些东东仍然还分不清楚。
将 PHPDoc index :
using System;
using Lucene.Net.Documents;
using Lucene.Net.Index;
using Lucene.Net.Analysis.Standard;
using System.IO;
using System.Text.RegularExpressions;
namespace LuceneTestIndex{
class Program{
public static void Main(string[] args){
DateTime start = DateTime.Now;
string idxDir = @"D:\PHPDocs\index";
string sourceDir = @"D:\PHPDocs\html";
Regex regExtract = new Regex("<title>(?<title>[\\s\\S]*?)</title>[\\s\\S]*?<body>(?<body>[\\s\\S]*?)</body>",RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.IgnoreCase);
Regex regNoHTML = new Regex(@"<[^>]+>",RegexOptions.Compiled | RegexOptions.Multiline);
bool createFlag = true;
if(Directory.Exists(idxDir)){
createFlag = false;
}
1361
Written by xlingfairy
Friday, 08 May 2009 23:28
先看以下内容:
XML 命名空间将 XML 文档中的元素和属性名称与自定义和预定义的 URI 关联起来。 为命名空间 URI 定义的前缀用来限定 XML 数据中的元素和属性的名称以实现此关联。 命名
任何没有用命名空间前缀完全限定的元素均属于默认命名空间。当在 XML 文档中使用多个命名空间时,将其中一个命名空间定义为默认命名空间可以使文档更加简洁。 只有来自
如果 XPath 表达式不包含前缀,则假定命名空间统一资源标识符 (URI) 是空的命名空间。 如果 XML 包含默认命名空间,仍必须将前缀和命名空间 URI 添加到
在取 Google Analytics 的数据时,Google 传回来一段XML,包括多个命名空间,大概如下,我做了删减:
|
1235
Written by xlingfairy
Thursday, 07 May 2009 21:55
首先,你需要一个能访问 analytics 的账号。
其次,这个账号要能读某个 profile 。
Google 提供了三种登陆 Google 账号的方法。AuthSub Proxy Authentication, OAuth Authentication, Client Login
这里我使用了 Client Login 方法。前两种没有过多研究。
Client Login 要求把账户名(Email) 和 密码 还有一些其它的信息一起发送(POST)到GOOGLE的接口.
在PHP中,要POST数据到服务器,一般用 socket 方法。在C#里,我试图也用 Socket 方法去请求,但是行不通,因为 要请求的地址是 ssl的(https 443端口),socket 连接到服务器之后,在 receive 的时候,一直接提示以中断连接之类的错误。百度查了查,说C#自带 socket 没有处理 ssl 的能力,需要第三放的 SSLSocket. 但是C# 里的 HttpWebRequest 可以很容易的做到。
Last Updated ( Thursday, 07 May 2009 22:00 )
3684
Written by xlingfairy
Wednesday, 15 April 2009 23:33
对于 GridView 我是一无所知,今天下午摸索了一下午,总算把 新增,删除,修改给弄通了。
首先,GridView 没有 新增功能,要模拟出这个功能,需要结合 GridView 的 EmptyDataTemplate 和 DetailsView 来做。EmptyDataTemplate 是当 dataSource 没有记录可显示的时候 要显示的东东。DetailsView 有 新增功能。一开始我考虑用 FooterTemplate 来做新增,但是做好之后发现当没有记录可显示的时候, FooterTemplate 根本就不显示。
Insert 和 Update 的问题解决了,但是 Delete 却把我给难住了,设了 ObjectDataSource 对象的 DeleteMethod 之后,一直提示我:ObjectDataSource 'ObjectDataSource1' could not find a non-generic method 'delete' that has no parameters.
查了查MSDN,看到有个 <DeleteParameters>,就照着写了一个,但是传到 Delete 方法里,却得不到要删除的ID,翻了N多网页,也没有找到所以然,后来看到一遍 GridView 72般绝技里有提到 GridView 的 onrowdeleting事件里处理删除,才用一种变通的方法把 Delete 给解决了。
Last Updated ( Thursday, 16 April 2009 08:37 )
|
|
|
|