<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_linbaoji</title><subtitle type="text">未成功的高手</subtitle><id>http://feed.cnblogs.com/blog/u/47666/rss</id><updated>2011-07-11T07:37:41Z</updated><author><name>TOYOE</name><uri>http://www.cnblogs.com/linbaoji/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/linbaoji/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/47666/rss"/><entry><id>http://www.cnblogs.com/linbaoji/archive/2011/07/07/2100285.html</id><title type="text">IP 地址 整型 互转 算法</title><summary type="text">GeoIP Country CSV Text Files MaxMind GeoIP databases are available in a Comma Separated Value (CSV) format, in addition to the binary format. These CSV files generally contain IP Address range and geographical data for all publicly assigned IPv4 addresses. Due to the large size of geolocation databa</summary><published>2011-07-07T09:09:00Z</published><updated>2011-07-07T09:09:00Z</updated><author><name>TOYOE</name><uri>http://www.cnblogs.com/linbaoji/</uri></author><link rel="alternate" href="http://www.cnblogs.com/linbaoji/archive/2011/07/07/2100285.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/linbaoji/archive/2011/07/07/2100285.html"/><content type="html">&lt;span class="PageHeader"&gt;GeoIP Country CSV Text Files&lt;/span&gt; &lt;p&gt;&lt;table border="0" cellspacing="0" cellpadding="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#c39e7f" valign="top"&gt;&lt;img src="http://www.maxmind.com/img/1x1.gif" width="1" height="3"  alt="" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;MaxMind GeoIP databases are available in a Comma Separated Value (CSV) format, in addition to the binary format. These CSV files generally contain IP Address range and geographical data for all publicly assigned IPv4 addresses. &lt;p&gt;Due to the large size of geolocation databases, we generally recommend using our binary format with one of our &lt;a href="http://www.maxmind.com/app/api"&gt;APIs&lt;/a&gt;, since they are highly optimized for speed and disk space. On the other hand, if you have a requirement to import the data into a SQL database, the CSV format is recommended. We have listed some guidelines for importing and querying the data with a SQL database. &lt;div class="Heading"&gt;CSV Format&lt;/div&gt;The CSV File contains six fields: &lt;ul class="lstSquare"&gt;&lt;li&gt;Beginning IP Address&lt;/li&gt;&lt;li&gt;Ending IP Address&lt;/li&gt;&lt;li&gt;Beginning IP Number*&lt;/li&gt;&lt;li&gt;Ending IP Number*&lt;/li&gt;&lt;li&gt;ISO 3166 Country Code&lt;/li&gt;&lt;li&gt;Country Name &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;This is an sample of how the CSV file is structured: &lt;table cellspacing="5" cellpadding="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code"&gt;"begin_ip","end_ip","begin_num","end_num","country","name"&lt;br/&gt;"61.88.0.0","61.91.255.255","1029177344","1029439487","AU","Australia"&lt;br/&gt;"61.92.0.0","61.93.255.255","1029439488","1029570559","HK","Hong Kong"&lt;br/&gt;"61.94.0.0","61.94.7.255","1029570560","1029572607","ID","Indonesia"&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src="http://www.maxmind.com/images/spacer.gif" width="1" height="1"  alt="" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;* Beginning IP Number and Ending IP Number are calculated as follows: &lt;table cellspacing="5" cellpadding="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code"&gt;ipnum = 16777216*w + 65536*x + 256*y + z   (1)&lt;br/&gt;&lt;br/&gt;where&lt;br/&gt;&lt;br/&gt;IP Address = w.x.y.z&lt;br/&gt;&lt;br/&gt;The reverse of this formula is&lt;br/&gt;&lt;br/&gt;w = int ( ipnum / 16777216 ) % 256;&lt;br/&gt;x = int ( ipnum / 65536    ) % 256;&lt;br/&gt;y = int ( ipnum / 256      ) % 256;&lt;br/&gt;z = int ( ipnum            ) % 256;&lt;br/&gt;&lt;br/&gt;Where % is the mod operator.&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src="http://www.maxmind.com/images/spacer.gif" width="1" height="1"  alt="" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Here is sample Perl code to convert the IP number to a IP address: &lt;table cellspacing="5" cellpadding="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code"&gt;sub numToStr {&lt;br/&gt;  my ($ipnum) = @_;&lt;br/&gt;  my $z = $ipnum % 256;&lt;br/&gt;  $ipnum &amp;gt;&amp;gt;= 8;&lt;br/&gt;  my $y = $ipnum % 256;&lt;br/&gt;  $ipnum &amp;gt;&amp;gt;= 8;&lt;br/&gt;  my $x = $ipnum % 256;&lt;br/&gt;  $ipnum &amp;gt;&amp;gt;= 8;&lt;br/&gt;  my $w = $ipnum % 256;&lt;br/&gt;  return "$w.$x.$y.$z";&lt;br/&gt;}&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src="http://www.maxmind.com/images/spacer.gif" width="1" height="1"  alt="" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;a name="query"&gt;&lt;/a&gt;It is useful to have the IP Number if you are performing IP Address lookups using a database. For example the following queries will find the country based on IP Address 24.24.24.24: &lt;p&gt;&lt;span class="oldH4"&gt;SQL Query&lt;/span&gt; &lt;table cellspacing="5" cellpadding="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code"&gt;SELECT ip_country FROM geoip WHERE 404232216 BETWEEN begin_ip_num AND end_ip_num LIMIT 1&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src="http://www.maxmind.com/images/spacer.gif" width="1" height="1"  alt="" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;span class="oldH4"&gt;MySQL Query&lt;/span&gt; &lt;table cellspacing="5" cellpadding="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code"&gt;SELECT ip_country FROM geoip WHERE 404232216 &amp;gt;= begin_ip_num AND&lt;br/&gt;404232216 &amp;lt;= end_ip_num LIMIT 1&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src="http://www.maxmind.com/images/spacer.gif" width="1" height="1"  alt="" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Here we used the formula (1) to compute the IP Number based on 24.24.24.24 &lt;table cellspacing="5" cellpadding="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code"&gt;404232216 = 16777216*24 + 65536*24 + 256*24 + 24&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src="http://www.maxmind.com/images/spacer.gif" width="1" height="1"  alt="" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="Heading"&gt;Usage with GeoIP or GeoLite City&lt;/div&gt;Here's a relatively faster way to query the GeoIP City CSV file in MySQL: &lt;p&gt;First create the SQL table as follows. CREATE TABLE `geo_blocks` (&lt;br/&gt;`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,&lt;br/&gt;`location_id` INT(10) UNSIGNED NOT NULL,&lt;br/&gt;`ip_start` INT(10) UNSIGNED NOT NULL,&lt;br/&gt;`ip_end` INT(10) UNSIGNED NOT NULL,&lt;br/&gt;`index_geo` INT(10) UNSIGNED NOT NULL,&lt;br/&gt;PRIMARY KEY (`id`),&lt;br/&gt;INDEX `idx_start` (`ip_start`),&lt;br/&gt;INDEX `idx_end` (`ip_end`),&lt;br/&gt;INDEX `idx_geo` (`index_geo`)&lt;br/&gt;);&lt;br/&gt;&lt;br/&gt;update `geo_blocks` set `index_geo` = (`ip_end` - mod(`ip_end`, 65536));&lt;br/&gt;To select the location, run: SELECT &lt;br/&gt;&lt;br/&gt;... &lt;br/&gt;&lt;br/&gt;FROM &lt;br/&gt;&lt;br/&gt;geo_blocks &lt;br/&gt;&lt;br/&gt;... &lt;br/&gt;&lt;br/&gt;WHERE &lt;br/&gt;&lt;br/&gt;index_geo = INET_ATON("92.229.175.253")-(INET_ATON("92.229.175.253")%65536) AND&lt;br/&gt;&lt;br/&gt;INET_ATON("92.229.175.253") BETWEEN ip_start AND ip_end;&lt;br/&gt;Contributed by Kamil Kubica &lt;p&gt;&lt;span class="oldH4"&gt;Guides&lt;/span&gt; Please see our &lt;a href="http://www.maxmind.com/app/geoip_resources"&gt;GeoIP Resources&lt;/a&gt; page for links on how to load the GeoIP files into MySQL, Oracle, PostgreSQL, and MS Access. &lt;/p&gt;&lt;img src="http://www.cnblogs.com/linbaoji/aggbug/2100285.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/linbaoji/archive/2011/07/07/2100285.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/linbaoji/archive/2010/12/07/1898978.html</id><title type="text">T-SQL：插入并返回自增ID</title><summary type="text">源地址：http://www.cnblogs.com/lsjwzh/archive/2008/08/03/1259370.htmlSQL SERVER 2000中，有三个比较类似的功能：他们分别是：SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY，它们都返回插入到 IDENTITY 列中的值。 IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值。IDENT_CURRENT 不受作用域和会话的限制，而受限于指定的表。IDENT_CURRENT 返回为任何会话和作用域中的特定表所生成的值。@@IDENTITY 返回为当前会话的所有作用</summary><published>2010-12-07T05:39:00Z</published><updated>2010-12-07T05:39:00Z</updated><author><name>TOYOE</name><uri>http://www.cnblogs.com/linbaoji/</uri></author><link rel="alternate" href="http://www.cnblogs.com/linbaoji/archive/2010/12/07/1898978.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/linbaoji/archive/2010/12/07/1898978.html"/><content type="html">&lt;p&gt;源地址：&lt;a href="http://www.cnblogs.com/lsjwzh/archive/2008/08/03/1259370.html"&gt;http://www.cnblogs.com/lsjwzh/archive/2008/08/03/1259370.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;SQL SERVER 2000中，有三个比较类似的功能：他们分别是：SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY，它们都返回插入到 IDENTITY 列中的值。 &lt;/p&gt;&lt;p&gt;IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值。IDENT_CURRENT 不受作用域和会话的限制，而受限于指定的表。IDENT_CURRENT 返回为任何会话和作用域中的特定表所生成的值。&lt;br /&gt;@@IDENTITY 返回为当前会话的所有作用域中的任何表最后生成的标识值。&lt;br /&gt;SCOPE_IDENTITY 返回为当前会话和当前作用域中的任何表最后生成的标识值&lt;/p&gt;&lt;p&gt;SCOPE_IDENTITY 和 @@IDENTITY 返回在当前会话中的任何表内所生成的最后一个标识值。但是，SCOPE_IDENTITY 只返回插入到当前作用域中的值；@@IDENTITY 不受限于特定的作用域。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;例如，有两个表 T1 和 T2，在 T1 上定义了一个 INSERT 触发器。当将某行插入 T1 时，触发器被激发，并在 T2 中插入一行。此例说明了两个作用域：一个是在 T1 上的插入，另一个是作为触发器的结果在 T2 上的插入。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;假设 T1 和 T2 都有 IDENTITY 列，@@IDENTITY 和 SCOPE_IDENTITY 将在 T1 上的 INSERT 语句的最后返回不同的值。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;@@IDENTITY 返回插入到当前会话中任何作用域内的最后一个 IDENTITY 列值，该值是插入 T2 中的值。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;SCOPE_IDENTITY() 返回插入 T1 中的 IDENTITY 值，该值是发生在相同作用域中的最后一个 INSERT。如果在作用域中发生插入语句到标识列之前唤醒调用 SCOPE_IDENTITY() 函数，则该函数将返回 NULL 值。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;而IDENT_CURRENT('T1') 和 IDENT_CURRENT('T2') 返回的值分别是这两个表最后自增的值。&lt;/p&gt;&lt;p&gt;ajqc的实验:(40条本地线程,40+40条远程线程同时并发测试,插入1200W行),得出的结论是: &lt;br /&gt;1.在典型的级联应用中.不能用@@IDENTITY,在CII850,256M SD的机器上1W多行时就会并发冲突.在P42.8C,512M DDR上,才6000多行时就并发冲突. &lt;br /&gt;2.SCOPE_IDENTITY()是绝对可靠的,可以用在存储过程中,连触发器也不用建,没并发冲突 &lt;/p&gt;&lt;p&gt;SELECT&amp;nbsp;&amp;nbsp; IDENT_CURRENT('TableName')&amp;nbsp;&amp;nbsp; --返回指定表中生成的最后一个标示值&amp;nbsp;&amp;nbsp; &lt;br /&gt;SELECT&amp;nbsp;&amp;nbsp; IDENT_INCR('TableName')--返回指定表的标示字段增量值&lt;br /&gt;SELECT&amp;nbsp;&amp;nbsp; IDENT_SEED('TableName')--返回指定表的标示字段种子值&lt;/p&gt;&lt;p&gt;返回最后插入记录的自动编号&lt;br /&gt;SELECT IDENT_CURRENT('TableName')&lt;br /&gt;&amp;nbsp;返回下一个自动编号:&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;SELECT&amp;nbsp;&amp;nbsp; IDENT_CURRENT('TableName')&amp;nbsp;&amp;nbsp; +&amp;nbsp;&amp;nbsp; (SELECT&amp;nbsp;&amp;nbsp; IDENT_INCR('TableName'))&lt;/p&gt;&lt;p&gt;SELECT @@IDENTITY --返回当前会话所有表中生成的最后一个标示值&lt;/p&gt;&lt;p&gt;前几天在做项目时，遇到插入数据的同时，返回ID值的问题，遂记录如下：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 插入数据的同时，返回ID值的sql语句。 &lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MSSQL:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INSERT INTO test2 (aa)&amp;nbsp;&amp;nbsp; VALUES ('cc')&amp;nbsp;&amp;nbsp; SELECT @@IDENTITY AS SEQUENCE&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MYSQL: &lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select last_insert_id() as ID from T_D_NM_SHOP_TEMPLET limit 1&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;本文来自CSDN博客，转载请标明出处：&lt;a href="http://blog.csdn.net/rongtou/archive/2009/03/15/3993099.aspx"&gt;http://blog.csdn.net/rongtou/archive/2009/03/15/3993099.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/linbaoji/aggbug/1898978.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/linbaoji/archive/2010/12/07/1898978.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/linbaoji/archive/2010/10/27/1862696.html</id><title type="text">Lucene.net 实现全文搜索</title><summary type="text">忙了几天终于实现一个简单的全文搜索在此回顾总结一下本文介绍一下Lucene.Net 是什么？Lucene.Net 能作什么？以及怎么做的问题？最后给出 Lucene.Net 实现全文搜索的一个示例1、Lucene.Net 是什么？Lucene.net 起初是一个开源项目然后转向商业化，也在Lucene.net 2.0已经发布，不过是要money D ,Lucene.net的命运有点类似于FreeT...</summary><published>2010-10-27T07:55:00Z</published><updated>2010-10-27T07:55:00Z</updated><author><name>TOYOE</name><uri>http://www.cnblogs.com/linbaoji/</uri></author><link rel="alternate" href="http://www.cnblogs.com/linbaoji/archive/2010/10/27/1862696.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/linbaoji/archive/2010/10/27/1862696.html"/><content type="html">&lt;p&gt;忙了几天终于实现一个简单的全文搜索在此回顾总结一下&lt;/p&gt;&lt;p&gt;本文介绍一下Lucene.Net 是什么？Lucene.Net 能作什么？以及怎么做的问题？最后给出 Lucene.Net 实现全文搜索的一个示例&lt;/p&gt;&lt;p&gt;1、Lucene.Net 是什么？&lt;/p&gt;&lt;p&gt;Lucene.net 起初是一个开源项目然后转向商业化，也在Lucene.net 2.0已经发布，不过是要money D ,Lucene.net的命运有点类似于FreeTextBox ，它在 1.6.5 版本之后发布的 2.0 开始了商业路线，2.0 提供了 DLL 方式的免费版本，源代码版本则必须购买商业的许可 licence；不过它留下了 1.6.5 版本的源代码，还是可以看到大部分的内部细节，但 2.0 版本中添加的对 Mozilla 浏览器的支持部分只有通过它生成的 HTML 和 javascript 脚本去窥测。&lt;/p&gt;&lt;p&gt;Lucene 是 Java 世界中常用的索引 API，使用它提供的方法可以为文本资料创建索引，并提供检索。（参考：NLucene 和 Lucene .NET）NLucene 是第一个的 .net 移植，也是一个有 .net 风格的版本，使用 .net 的命名规范和类库设计。不过 NLucene 项目的 leader 由于精力原因，只发布了 1.2beta 版本。Lucene.NET 项目出现后，NLucene 就没有新的计划了。&lt;/p&gt;&lt;p&gt;Lucene.NET 当初号称要做 up-to-date 的 .net Lucene 移植，它只在命名方面采纳了 .net 的建议，主要目标倾向于和 Java Lucene 兼容：一个是索引格式兼容，达到可以共同工作的目的；一个是命名接近（只相差很少，比如大小写等），目的是可以方便开发者使用 Java Lucene 相关的代码和资料。&lt;/p&gt;&lt;p&gt;不知什么时候 Lucene.NET 项目已经放弃了开源计划，转向了商业。它居然把 SourceForge 上已经开源的文件也删除了。与此同时，SourceForge 上又出现了 dotLucene 项目，出于对 Lucene.NET 的抗议，dotLucene 几乎将 Lucene.NET 的代码原封不动放在上面作为他们的起点。（&lt;a href="https://sourceforge.net/forum/forum.php?thread_id=1153933&amp;amp;forum_id=408004"&gt;https://sourceforge.net/forum/forum.php?thread_id=1153933&amp;amp;forum_id=408004&lt;/a&gt;）。&lt;/p&gt;&lt;p&gt;说白了Lucene.Net就是是一个信息检索的函数库(Library),利用它你可以为你的应用加上索引和搜索的功能. &lt;/p&gt;&lt;p&gt;Lucene的使用者不必深入了解有关全文检索的知识,仅仅学会使用库中的几个类,知道怎么调用Library中的函数，就可以为你的应用实现全文检索的功能. &lt;/p&gt;&lt;p&gt;不过千万别期望Lucene是一个象google和百度那样的搜索引擎,它仅仅是一个工具,一个Library.你也可以把它理解为一个将索引,搜索功能封装的很好的一套简单易用的API.利用这套API你可以做很多有关搜索的事情,而且很方便，它可以满足你对一个应用做简单的全文搜索，作为应用的开发者（非专业搜索引擎开发者）来说，它的功能足以满足你。&lt;/p&gt;&lt;p&gt;2、Lucene.Net 可以作什么？&lt;/p&gt;&lt;p&gt;Lucene可以对任何的数据做索引和搜索. Lucene不管数据源是什么格式,只要它能被转化为文字的形式,就可以被Lucene所分析利用.也就是说不管是MS word, Html ,pdf还是其他什么形式的文件只要你可以从中抽取出文字形式的内容就可以被Lucene所用.你就可以用Lucene对它们进行索引以及搜索.&lt;/p&gt;&lt;p&gt;3、使用 Lucene.Net 怎么做？&lt;/p&gt;&lt;p&gt;简单的归结为：创建索引，和使用索引，其中创建索引就是将要搜索的数据源的那些信息作为我们的关键信息来存储或者是分析，为搜索留下标记就象Word里面创建目录（个人理解），使用索引就是在搜索的时候根据索引的信息来分析数据源将我们需要的信息提取出来。&lt;/p&gt;&lt;p&gt;具体请看一下示例：&lt;/p&gt;&lt;p&gt;创建索引的类&lt;/p&gt;&lt;p&gt;public class IntranetIndexer&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**/////索引写入器&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private IndexWriter writer;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //要写入索引的文件的根目录&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private string docRootDirectory;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //要匹配的文件格式&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private string[] pattern;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**//// &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// 初始化一个索引写入器writer，directory为创建索引的目录，true代表如果不存在索引文件将重新创建索引文件，如果已经存在索引文件将覆写索引文件&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// 传入的要创建索引的目录，注意是字符串值，如果目录不存在，他将会被自动创建&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public IntranetIndexer(string directory)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; writer = new IndexWriter(directory, new StandardAnalyzer(), true);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; writer.SetUseCompoundFile(true);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void AddDirectory(DirectoryInfo directory, string [] pattern)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.docRootDirectory = directory.FullName;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.pattern = pattern;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; addSubDirectory(directory);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void addSubDirectory(DirectoryInfo directory)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(int i=0;i&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;foreach (FileInfo fi in directory.GetFiles(pattern[i]))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AddHtmlDocument(fi.FullName);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (DirectoryInfo di in directory.GetDirectories())&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; addSubDirectory(di);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void AddHtmlDocument(string path)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string exname=Path.GetExtension (path);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Document doc = new Document();&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string html;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(exname.ToLower ()==".html" ||exname .ToLower ()==".htm"||exname .ToLower ()==".txt")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using(StreamReader sr=new StreamReader (path,System .Text .Encoding .Default ))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; html = sr.ReadToEnd();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (StreamReader sr = new StreamReader(path, System.Text.Encoding.Unicode&amp;nbsp; ))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; html = sr.ReadToEnd();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int relativePathStartsAt = this.docRootDirectory.EndsWith("\\") ? this.docRootDirectory.Length : this.docRootDirectory.Length + 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string relativePath = path.Substring(relativePathStartsAt);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string title=Path.GetFileName(path);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //判断若是网页则去标签否则不用&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(exname.ToLower ()==".html" ||exname .ToLower ()==".htm")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; doc.Add(Field.UnStored("text", parseHtml(html)));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; doc.Add (Field .UnStored ("text",html));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; doc.Add(Field.Keyword("path", relativePath));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //doc.Add(Field.Text("title", getTitle(html)));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; doc.Add (Field .Text ("title",title));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; writer.AddDocument(doc);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;/**//// &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// 去除网页中的标签&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// 网页&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// 返回去除后的网页文本&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private string parseHtml(string html)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string temp = Regex.Replace(html, "&amp;lt;[^&amp;gt;]*&amp;gt;", "");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return temp.Replace(" ", " ");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**//// &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// 获取网页标题&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private string getTitle(string html)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Match m = Regex.Match(html, "");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (m.Groups.Count == 2)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return m.Groups[1].Value;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return "文档标题未知";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**//// &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// 优化索引并关闭写入器&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Close()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; writer.Optimize();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; writer.Close();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/p&gt;&lt;p&gt;&lt;br /&gt;首先建立Document对象,然后为Document对象添加一些属性Field.你可以把Document对象看成是虚拟文件,将来将从此获取信息.而Field则看成是描述此虚拟文件的元数据(metadata).其中Field包括四个类型： Keywork &lt;/p&gt;&lt;p&gt;&amp;nbsp;该类型的数据将不被分析,而会被索引并保存保存在索引中. &lt;br /&gt;&amp;nbsp;&lt;br /&gt;UnIndexed &lt;br /&gt;&amp;nbsp;该类型的数据不会被分析也不会被索引,但是会保存在索引. &lt;br /&gt;&amp;nbsp;&lt;br /&gt;UnStored &lt;br /&gt;&amp;nbsp;和UnIndexed刚好相反,被分析被索引,但是不被保存. &lt;br /&gt;&amp;nbsp;&lt;br /&gt;Text &lt;br /&gt;&amp;nbsp;和UnStrored类似.如果值的类型为string还会被保存.如果值的类型为Reader就不会被保存和UnStored一样. &lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;最后将每一个Document添加到索引当中。&lt;/p&gt;&lt;p&gt;下面是对索引进行搜索 &lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;//创建一个索引器&lt;br /&gt;&amp;nbsp;&amp;nbsp; IndexSearcher searcher = new IndexSearcher(indexDirectory); &lt;br /&gt;&amp;nbsp;&amp;nbsp; //解析索引的text字段以便搜索&lt;br /&gt;&amp;nbsp;&amp;nbsp; Query query = QueryParser.Parse(this.Q, "text", new StandardAnalyzer());&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; //将搜索结果放在hits中&lt;br /&gt;&amp;nbsp;&amp;nbsp; Hits hits = searcher.Search(query);&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; //统计搜索的总记录数&lt;br /&gt;&amp;nbsp;&amp;nbsp; this.total = hits.Length();&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; //高亮显示&lt;br /&gt;&amp;nbsp;&amp;nbsp; QueryHighlightExtractor highlighter = new QueryHighlightExtractor(query, new StandardAnalyzer(), "", "");&amp;nbsp;&amp;nbsp; &lt;br /&gt;第一步利用IndexSearcher打开索引文件用于后面搜索,其中的参数是索引文件的路径.&lt;/p&gt;&lt;p&gt;第二步使用QueryParser将可读性较好的查询语句(比如查询的词lucene ,以及一些高级方式lucene AND .net)转化为Lucene内部使用的查询对象.&lt;/p&gt;&lt;p&gt;第三步执行搜索.并将结果返回到hits集合.需要注意的是Lucene并不是一次将所有的结果放入hits中而是采取一次放一部分的方式.出于空间考虑. &lt;/p&gt;&lt;p&gt;然后将搜索的结果进行处理并在页面上显示出来：&lt;/p&gt;&lt;p&gt;for (int i = startAt; i &amp;lt; resultsCount; i++) &lt;br /&gt;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Document doc = hits.Doc(i);&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; string path = doc.Get("path");&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; string location =Server.MapPath("documents")+"&lt;a href="http://www.cnblogs.com/linbaoji/admin/file://%22+path/"&gt;http://www.cnblogs.com/linbaoji/admin/file://%22+path/&lt;/a&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string exname=Path.GetExtension (path);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; string plainText ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; string str=doc.Get ("title");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(exname==".html" || exname ==".htm" || exname ==".txt")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (StreamReader sr = new StreamReader(location, System.Text.Encoding.Default))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; plainText = parseHtml(sr.ReadToEnd());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (StreamReader sr = new StreamReader(location, System.Text.Encoding.Unicode ))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; plainText = sr.ReadToEnd();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //DataTable 添加行 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataRow row = this.Results.NewRow();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; row["title"] = doc.Get("title");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; string IP=Request.Url.Host;//获取服务器IP&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Request.Url.Port;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; row["path"]=@"&lt;a href="http://%22+ip+%22/WebUI/Search/documents/%22+path"&gt;http://%22+ip+%22/WebUI/Search/documents/%22+path&lt;/a&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; row["sample"] = highlighter.GetBestFragments(plainText, 80, 2, "");&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Results.Rows.Add(row);&lt;br /&gt;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp; searcher.Close();//关闭搜索器&lt;br /&gt;想对Lucene.Net 进行更高级，更全面，更深层次了解的请参阅一下网站：&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;a href="http://www.alphatom.com/"&gt;http://www.alphatom.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://blog.tianya.cn/blogger/view_blog.asp?BlogName=aftaft"&gt;http://blog.tianya.cn/blogger/view_blog.asp?BlogName=aftaft&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/linbaoji/aggbug/1862696.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/linbaoji/archive/2010/10/27/1862696.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/linbaoji/archive/2010/07/20/1781192.html</id><title type="text">WCF跨域 这可能是由于试图以跨域方式访问服务而又没有正确的跨域策略,或策略不适用于 SOAP</title><summary type="text">尝试向 URI“http://localhost:8001/Services...。这可能是由于试图以跨域方式访问服务而又没有正确的跨域策略，或策略不适 用于 SOAP 服务。您可能需要与该服务的所有者联系，以发布跨域策略文件并确保该文件允许发送 SOAP 相关的 HTTP 标头。出现此错误也可能是由于使用的是 Web 服务代理中的内部类型而没有使用 InternalsVisibl...</summary><published>2010-07-20T02:54:00Z</published><updated>2010-07-20T02:54:00Z</updated><author><name>TOYOE</name><uri>http://www.cnblogs.com/linbaoji/</uri></author><link rel="alternate" href="http://www.cnblogs.com/linbaoji/archive/2010/07/20/1781192.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/linbaoji/archive/2010/07/20/1781192.html"/><content type="html">&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 尝试向  URI&amp;#8220;http://localhost:8001/Services...。这可能是由于试图以跨域方式访问服务而又没有正确的跨域策略，或策略不适 用于 SOAP 服务。您可能需要与该服务的所有者联系，以发布跨域策略文件并确保该文件允许发送 SOAP 相关的 HTTP  标头。出现此错误也可能是由于使用的是 Web 服务代理中的内部类型而没有使用 InternalsVisibleToAttribute  属性。有关详细信息，请参阅内部异常。 &lt;br /&gt;  &lt;p&gt;解决方法：&lt;/p&gt; &lt;p&gt;一、在WCF项目根目录下添加clientaccesspolicy.xml文件&lt;/p&gt; &lt;p&gt;&amp;lt;?xml&amp;nbsp;version="1.0"&amp;nbsp;encoding="utf-8"&amp;nbsp;?&amp;gt;&lt;br /&gt; &amp;lt;access-policy&amp;gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;lt;cross-domain-access&amp;gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;policy&amp;gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;allow-from&amp;nbsp;http-request-headers="*"&amp;gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;domain&amp;nbsp;uri="*"/&amp;gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/allow-from&amp;gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;grant-to&amp;gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;resource&amp;nbsp;path="/"&amp;nbsp;include-subpaths="true"/&amp;gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/grant-to&amp;gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/policy&amp;gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;lt;/cross-domain-access&amp;gt;&lt;br /&gt; &amp;lt;/access-policy&amp;gt;&lt;/p&gt; &lt;p&gt;二、在silverlight项目中添加一个中介类ServerManager.cs&lt;br /&gt; public&amp;nbsp;class&amp;nbsp;ServerManager&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;static&amp;nbsp;ServiceWcfClient&amp;nbsp;servicePicture&amp;nbsp;=&amp;nbsp;new&amp;nbsp;ServiceWcfClient();&lt;br /&gt; &lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;internal&amp;nbsp;static&amp;nbsp;ServiceWcfClient&amp;nbsp;GetPox()&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(servicePicture.State&amp;nbsp;==&amp;nbsp;System.ServiceModel.CommunicationState.Created)&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;servicePicture.Endpoint.Address&amp;nbsp;=&amp;nbsp;new&amp;nbsp;System.ServiceModel.EndpointAddress("http://localhost:52207/Service...");&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;servicePicture;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;servicePicture;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt; &lt;p&gt;三、实例化实体类的时候一般是这样：ServiceWcfClient clientWcf = new ServiceWcfClient();&lt;/p&gt; &lt;p&gt;换成：ServiceWcfClient clientWcf = ServerManager.GetPox();&lt;/p&gt;&lt;img src="http://www.cnblogs.com/linbaoji/aggbug/1781192.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/linbaoji/archive/2010/07/20/1781192.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/linbaoji/archive/2010/05/25/1743870.html</id><title type="text">JS的正则表达式</title><summary type="text">//校验是否全由数字组成 function isDigit(s) { var patrn=/^[0-9]{1,20}$/; if (!patrn.exec(s)) return false return true } //校验登录名：只能输入5-20个以字母开头、可带数字、“_”、“.”的字串 Java代码 functionisRegisterUse...</summary><published>2010-05-25T12:18:00Z</published><updated>2010-05-25T12:18:00Z</updated><author><name>TOYOE</name><uri>http://www.cnblogs.com/linbaoji/</uri></author><link rel="alternate" href="http://www.cnblogs.com/linbaoji/archive/2010/05/25/1743870.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/linbaoji/archive/2010/05/25/1743870.html"/><content type="text">//校验是否全由数字组成 function isDigit(s) { var patrn=/^[0-9]{1,20}$/; if (!patrn.exec(s)) return false return true } //校验登录名：只能输入5-20个以字母开头、可带数字、“_”、“.”的字串 Java代码 functionisRegisterUse...</content></entry><entry><id>http://www.cnblogs.com/linbaoji/archive/2010/05/25/1743858.html</id><title type="text">ASP.NET 中的正则表达式</title><summary type="text">引言Microsoft®.NET Framework 对正则表达式的支持是一流的，甚至在 Microsoft® ASP.NET 中也有依赖正则表达式语言的控件。本文介绍了深入学习正则表达式的基础知识和推荐内容。本文主要面向对正则表达式知之甚少或没有使用经验，但却熟悉 ASP.NET、可借助 .NET 编程的初学者。此外，希望本文连同 regular expression che...</summary><published>2010-05-25T12:04:00Z</published><updated>2010-05-25T12:04:00Z</updated><author><name>TOYOE</name><uri>http://www.cnblogs.com/linbaoji/</uri></author><link rel="alternate" href="http://www.cnblogs.com/linbaoji/archive/2010/05/25/1743858.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/linbaoji/archive/2010/05/25/1743858.html"/><content type="text">引言Microsoft®.NET Framework 对正则表达式的支持是一流的，甚至在 Microsoft® ASP.NET 中也有依赖正则表达式语言的控件。本文介绍了深入学习正则表达式的基础知识和推荐内容。本文主要面向对正则表达式知之甚少或没有使用经验，但却熟悉 ASP.NET、可借助 .NET 编程的初学者。此外，希望本文连同 regular expression che...</content></entry><entry><id>http://www.cnblogs.com/linbaoji/archive/2010/05/20/1740025.html</id><title type="text">informix中的to_date</title><summary type="text">和oracle中差别太大，记下。网上绝对很难搜到TO_CHAR 函数（IDS）TO_CHAR 函数将计算为 DATE、DATETIME 或数值的表达式转换为字符串。返回的字符串代表第一个参数指定的数据值，使用第二个参数 format_string 参数指定的格式化掩码。此函数的第一个参数必须是 DATE、DATETIME 或内置数字数据类型，或者是可以转换成这些数据类型之一的字符串。如果初始 DA...</summary><published>2010-05-20T06:16:00Z</published><updated>2010-05-20T06:16:00Z</updated><author><name>TOYOE</name><uri>http://www.cnblogs.com/linbaoji/</uri></author><link rel="alternate" href="http://www.cnblogs.com/linbaoji/archive/2010/05/20/1740025.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/linbaoji/archive/2010/05/20/1740025.html"/><content type="text">和oracle中差别太大，记下。网上绝对很难搜到TO_CHAR 函数（IDS）TO_CHAR 函数将计算为 DATE、DATETIME 或数值的表达式转换为字符串。返回的字符串代表第一个参数指定的数据值，使用第二个参数 format_string 参数指定的格式化掩码。此函数的第一个参数必须是 DATE、DATETIME 或内置数字数据类型，或者是可以转换成这些数据类型之一的字符串。如果初始 DA...</content></entry><entry><id>http://www.cnblogs.com/linbaoji/archive/2009/12/16/1625533.html</id><title type="text">Tomcat+JSP经典配置实例</title><summary type="text">经常看到jsp的初学者问tomcat下如何配置jsp、servlet和bean的问题，于是总结了一下如何tomcat下配置jsp、servlet和ben，希望对那些初学者有所帮助。一、开发环境配置第一步：下载j2sdk和tomcat：到sun官方站（http://java.sun.com/j2se/1.5.0/download.jsp）下载j2sdk，注意下载版本为Windows ...</summary><published>2009-12-16T05:54:00Z</published><updated>2009-12-16T05:54:00Z</updated><author><name>TOYOE</name><uri>http://www.cnblogs.com/linbaoji/</uri></author><link rel="alternate" href="http://www.cnblogs.com/linbaoji/archive/2009/12/16/1625533.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/linbaoji/archive/2009/12/16/1625533.html"/><content type="text">经常看到jsp的初学者问tomcat下如何配置jsp、servlet和bean的问题，于是总结了一下如何tomcat下配置jsp、servlet和ben，希望对那些初学者有所帮助。一、开发环境配置第一步：下载j2sdk和tomcat：到sun官方站（http://java.sun.com/j2se/1.5.0/download.jsp）下载j2sdk，注意下载版本为Windows ...</content></entry><entry><id>http://www.cnblogs.com/linbaoji/archive/2009/12/16/1625529.html</id><title type="text">建立使用「表單驗證」來針對 Active Directory 驗證使用者的 Web 應用程式</title><summary type="text">建立使用「表單驗證」來針對 Active Directory 驗證使用者的 Web 應用程式。‧ 從 Active Directory 取得驗證使用者所屬之群組及通訊群組清單的清單‧ 使用 HttpContext.Current.User 屬性建立與使用者 Web 要求相關的 GenericPrincipal 物件。回到頁首適用於本單元適用於下列產品及技術：‧ ...</summary><published>2009-12-16T05:53:00Z</published><updated>2009-12-16T05:53:00Z</updated><author><name>TOYOE</name><uri>http://www.cnblogs.com/linbaoji/</uri></author><link rel="alternate" href="http://www.cnblogs.com/linbaoji/archive/2009/12/16/1625529.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/linbaoji/archive/2009/12/16/1625529.html"/><content type="text">建立使用「表單驗證」來針對 Active Directory 驗證使用者的 Web 應用程式。‧ 從 Active Directory 取得驗證使用者所屬之群組及通訊群組清單的清單‧ 使用 HttpContext.Current.User 屬性建立與使用者 Web 要求相關的 GenericPrincipal 物件。回到頁首適用於本單元適用於下列產品及技術：‧ ...</content></entry><entry><id>http://www.cnblogs.com/linbaoji/archive/2009/12/11/1621923.html</id><title type="text">C#常用日期格式处理转换[C#日期格式转换大全](转)</title><summary type="text">有时候我们要对时间进行转换,达到不同的显示效果 默认格式为:2005-6-6 14:33:34 如果要换成成200506,06-2005,2005-6-6或更多的该怎么办呢 我们要用到:DateTime.ToString的方法(String, IFormatProvider) using System; using System.Globalization; String form...</summary><published>2009-12-11T06:55:00Z</published><updated>2009-12-11T06:55:00Z</updated><author><name>TOYOE</name><uri>http://www.cnblogs.com/linbaoji/</uri></author><link rel="alternate" href="http://www.cnblogs.com/linbaoji/archive/2009/12/11/1621923.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/linbaoji/archive/2009/12/11/1621923.html"/><content type="text">有时候我们要对时间进行转换,达到不同的显示效果 默认格式为:2005-6-6 14:33:34 如果要换成成200506,06-2005,2005-6-6或更多的该怎么办呢 我们要用到:DateTime.ToString的方法(String, IFormatProvider) using System; using System.Globalization; String form...</content></entry></feed>
