给梦一个奔跑的方向!
.NET
PDF Print E-mail
1191
User Rating: / 1
PoorBest 
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 )
 
PDF Print E-mail
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; 
   }
   
 
PDF Print E-mail
1361
User Rating: / 4
PoorBest 
Written by xlingfairy
Friday, 08 May 2009 23:28
先看以下内容:
XML 命名空间将 XML 文档中的元素和属性名称与自定义和预定义的 URI 关联起来。 为命名空间 URI 定义的前缀用来限定 XML 数据中的元素和属性的名称以实现此关联。 命名
空间可防止元素和属性名称冲突,并允许以不同的方式处理和验证同名的元素和属性。http://msdn.microsoft.com/zh-cn/library/c1a6xs06.aspx
任何没有用命名空间前缀完全限定的元素均属于默认命名空间。当在 XML 文档中使用多个命名空间时,将其中一个命名空间定义为默认命名空间可以使文档更加简洁。 只有来自
非默认命名空间的元素需要完全限定。 默认命名空间只适用于元素,不适用于属性。http://msdn.microsoft.com/zh-cn/library/757cbs7s.aspx

如果 XPath 表达式不包含前缀,则假定命名空间统一资源标识符 (URI) 是空的命名空间。 如果 XML 包含默认命名空间,仍必须将前缀和命名空间 URI 添加到
XmlNamespaceManager;否则,不会选择任何节点。http://msdn.microsoft.com/zh-cn/library/d271ytdx.aspx

在取 Google Analytics 的数据时,Google 传回来一段XML,包括多个命名空间,大概如下,我做了删减:
 
PDF Print E-mail
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 可以很容易的做到。
Client Login 的接口地址是:
https://www.google.com/accounts/ClientLogin
登陆成功后,google 会返回几个参数给你,其中有个 Auth, 这个Auth 需要保存下来,后面的每次请求都需要使用它。
下面代码中的 service 是一个固定的值,不改。source 随便。返回的数据里,最后一个就是 Auth
Last Updated ( Thursday, 07 May 2009 22:00 )
 
PDF Print E-mail
3684
User Rating: / 8
PoorBest 
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 )
 

Popular Contents

Recommend

Site Info

Members : 1
Content : 141
Web Links : 7
Content View Hits : 112539

Links