<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-19344303</id><updated>2011-04-21T11:49:01.725-07:00</updated><category term='search java lucene'/><title type='text'>Javen-Studio咖啡小屋软件工作室</title><subtitle type='html'>http://javenstudio.org/ - C++ Java 分布式 搜索引擎 - 科以人重科亦重,人以科传人可知 - Naven's Research Laboratory - Thinking of Life, Imagination of Future</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://javenstudio.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344303/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://javenstudio.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Javen-Studio</name><uri>http://www.blogger.com/profile/09021504944813976215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.cppblog.com/images/cppblog_com/javenstudio/94/o_longhorn.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>42</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-19344303.post-767446752445034447</id><published>2009-03-21T17:57:00.000-07:00</published><updated>2009-03-21T17:58:54.736-07:00</updated><title type='text'>Hawk搜索引擎平台0.6.22测试版(免费下载)</title><content type='html'>&lt;a href="http://javenstudio.org/"&gt;Hawk搜索引擎平台0.6.22测试版(免费下载)&lt;/a&gt;&lt;a href="http://javenstudio.org/"&gt;&lt;/a&gt;&lt;br /&gt;Hawk 搜索引擎平台是面向中小型网站，可以定制的垂直搜索引擎平台。本搜索引擎平台目标是方便用户搭建站内搜索、某个领域的垂直搜索、以及检索个人文档以及自己关注的网站信息的桌面搜索等应用领域。它改造自Lucene，Hadoop和Nutch系统，是纯Java的搜索平台软件，可以运行于Windows及Linux等平台，具备基本的抓取、索引和检索功能，本搜索引擎免费下载，欢迎大家测试和使用！&lt;br /&gt;Hawk 搜索引擎平台特点简介&lt;br /&gt;对网页进行深度抓取和分析，自定义抓取规则，实现站内搜索。&lt;br /&gt;可以索引各种常用类型文档，实现桌面文档检索。&lt;br /&gt;单台PC服务器能索引上千万文档，可以用于中小型检索服务。&lt;br /&gt;可以自定义网页展示模板，或XML接口，轻松与各种系统整合。&lt;br /&gt;自动分析网页文本，提取新词，如人名，地名等。&lt;br /&gt;支持检索词自动推荐以及繁简转换功能。&lt;br /&gt;可以定制主页的各项文字，包括包含自己的欢迎网页。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.javenstudio.org/"&gt;拥有百万文档的开发文档库搜索&lt;/a&gt;&lt;a href="http://docs.javenstudio.org/"&gt;&lt;/a&gt;&lt;br /&gt;本开发文档库索引了大量常用软件的开发文档和API参考手册，包括主要的Java文档、RFC文档和Linux系统下的文档如man手册等，完整的最新版MSDN联机丛书，Android/Symbian参考手册，Eclipse/Oracle帮助文档，Apple和iPhone系统开发文档，Solaris、OpenOffice和mysql手册等等，超过百万篇网页及PDF等格式文档，欢迎使用！&lt;br /&gt;&lt;br /&gt;&lt;a href="http://javenstudio.org/"&gt;© 2008 Javen-Studio&lt;/a&gt; &lt;a href="http://javenstudio.org/"&gt;http://javenstudio.org/&lt;/a&gt; 咖啡小屋&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344303-767446752445034447?l=javenstudio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javenstudio.blogspot.com/feeds/767446752445034447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344303&amp;postID=767446752445034447' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344303/posts/default/767446752445034447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344303/posts/default/767446752445034447'/><link rel='alternate' type='text/html' href='http://javenstudio.blogspot.com/2009/03/hawk0622.html' title='Hawk搜索引擎平台0.6.22测试版(免费下载)'/><author><name>Javen-Studio</name><uri>http://www.blogger.com/profile/09021504944813976215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.cppblog.com/images/cppblog_com/javenstudio/94/o_longhorn.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344303.post-3949565592997353166</id><published>2008-10-24T10:46:00.001-07:00</published><updated>2008-11-02T21:44:03.965-08:00</updated><title type='text'>Annotated Lucene （源码剖析）</title><content type='html'>Apache Lucene是一个高性能（high-performance）的全能的全文检索（full-featured text search engine）的搜索引擎框架库，完全（entirely）使用Java开发。它是一种技术（technology），适合于（suitable for）几乎（nearly）任何一种需要全文检索（full-text search）的应用，特别是跨平台（cross-platform）的应用。&lt;br /&gt;&lt;br /&gt;0, &lt;a href="http://javenstudio.org/blog/archives/55.html"&gt;Annotated Lucene （源码剖析）&lt;/a&gt;&lt;br /&gt;1, &lt;a href="http://javenstudio.org/blog/lucene-catalog"&gt;Annotated Lucene：目录&lt;/a&gt;&lt;br /&gt;2, &lt;a href="http://javenstudio.org/blog/lucene-overview"&gt;Annotated Lucene：第一节 Lucene是什么&lt;/a&gt;&lt;br /&gt;3, &lt;a href="http://javenstudio.org/blog/lucene-indexfile-overview"&gt;Annotated Lucene：第二节 索引文件概述&lt;/a&gt;&lt;br /&gt;4, &lt;a href="http://javenstudio.org/blog/lucene-indexfile-structure"&gt;Annotated Lucene：第三节 索引文件结构(1)&lt;/a&gt;&lt;br /&gt;5, &lt;a href="http://javenstudio.org/blog/lucene-indexfile-structure-2"&gt;Annotated Lucene：第三节 索引文件结构(2)&lt;/a&gt;&lt;br /&gt;6, &lt;a href="http://javenstudio.org/blog/lucene-indexfile-structure-3"&gt;Annotated Lucene：第三节 索引文件结构(3)&lt;/a&gt;&lt;br /&gt;7, &lt;a href="http://javenstudio.org/blog/lucene-indexfile-structure-4"&gt;Annotated Lucene：第三节 索引文件结构(4)&lt;/a&gt;&lt;br /&gt;8, &lt;a href="http://javenstudio.org/blog/lucene-index-howto"&gt;Annotated Lucene：第四节 索引是如何创建的&lt;/a&gt;&lt;br /&gt;9, &lt;a href="http://javenstudio.org/blog/lucene-index-create"&gt;Annotated Lucene：第四节 索引创建过程&lt;/a&gt;&lt;br /&gt;10, &lt;a href="http://javenstudio.org/blog/lucene-store-howto"&gt;Annotated Lucene：第五节 索引是如何存储的&lt;/a&gt;&lt;br /&gt;11, &lt;a href="http://javenstudio.org/blog/lucene-analyzer-howto"&gt;Annotated Lucene：第六节 文档内容是如何分析的&lt;/a&gt;&lt;br /&gt;12, &lt;a href="http://javenstudio.org/blog/lucene-similarity-howto"&gt;Annotated Lucene：第七节 如何给文档评分&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;&lt;span style="font-size:78%;"&gt;备注：未完待续，部分内容和插图译自Lucene网站及代码，个别图片来自网上&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Annotated Hadoop 作者：naven 日期：2008-10-20&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344303-3949565592997353166?l=javenstudio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javenstudio.blogspot.com/feeds/3949565592997353166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344303&amp;postID=3949565592997353166' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344303/posts/default/3949565592997353166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344303/posts/default/3949565592997353166'/><link rel='alternate' type='text/html' href='http://javenstudio.blogspot.com/2008/10/annotated-lucene.html' title='Annotated Lucene （源码剖析）'/><author><name>Javen-Studio</name><uri>http://www.blogger.com/profile/09021504944813976215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.cppblog.com/images/cppblog_com/javenstudio/94/o_longhorn.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344303.post-8511799155914744450</id><published>2008-10-24T10:45:00.001-07:00</published><updated>2008-10-24T10:45:49.300-07:00</updated><title type='text'>Hawk搜索引擎平台应用：词典搜索和文档搜索</title><content type='html'>&lt;div class="postText"&gt;     &lt;h3&gt;&lt;a href="http://javenstudio.org/blog/?page_id=87"&gt;Hawk搜索引擎平台应用：词典搜索和文档搜索&lt;/a&gt;&lt;/h3&gt; &lt;a href="http://javenstudio.org/blog/?page_id=87"&gt;&lt;img style="margin: 0px 10px 10px 0px; float: left;" alt="DictSearch screenshots" src="http://javenstudio.org/static/release/dict-small.jpg" /&gt;&lt;/a&gt; &lt;spam&gt;Hawk 搜索引擎平台可用来定制自己的搜索应用服务，如站内网页搜索和桌面搜索。下面介绍两个很有用的桌面搜索应用。辞典搜索收录有四十部超过800万词汇的常用 英语和汉语词典，如朗文，牛津，汉语大词典等。文档搜索服务索引了主要的Java文档和Linux系统下的文档如man手册等，欢迎使用！&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://javenstudio.org/"&gt;&lt;u&gt;&lt;span style="color:#810081;"&gt;© 2008 Javen-Studio&lt;/span&gt;&lt;/u&gt;&lt;/a&gt; &lt;a href="http://javenstudio.org/"&gt;http://javenstudio.org&lt;/a&gt; 咖啡小屋      &lt;/spam&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344303-8511799155914744450?l=javenstudio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javenstudio.blogspot.com/feeds/8511799155914744450/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344303&amp;postID=8511799155914744450' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344303/posts/default/8511799155914744450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344303/posts/default/8511799155914744450'/><link rel='alternate' type='text/html' href='http://javenstudio.blogspot.com/2008/10/hawk.html' title='Hawk搜索引擎平台应用：词典搜索和文档搜索'/><author><name>Javen-Studio</name><uri>http://www.blogger.com/profile/09021504944813976215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.cppblog.com/images/cppblog_com/javenstudio/94/o_longhorn.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344303.post-3350451207270970484</id><published>2008-07-20T00:10:00.000-07:00</published><updated>2008-07-20T00:12:40.575-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='search java lucene'/><title type='text'>Hawk搜索引擎平台0.6.9测试版(提供下载)</title><content type='html'>&lt;a href="http://javenstudio.org/blog/?p=64"&gt;Hawk搜索引擎平台0.6.9测试版(提供下载)&lt;/a&gt;&lt;a href="http://javenstudio.org/"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hawk 搜索引擎平台是面向中小型网站，可以定制的垂直搜索引擎平台。本搜索引擎平台目标是方便用户搭建站内搜索、某个领域的垂直搜索、以及检索个人文档以及自己关注的网站信息的桌面搜索等应用领域。它改造自Lucene，Hadoop和Nutch系统，是纯Java的搜索平台软件，可以运行于Windows及Linux等平台，具备基本的抓取、索引和检索功能，本搜索引擎将免费提供，欢迎大家测试和使用，谢谢！&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Hawk 搜索引擎平台特点简介 &lt;/p&gt;&lt;ul&gt;&lt;li&gt;对网页进行深度抓取和分析，自定义抓取规则，实现站内搜索。&lt;/li&gt;&lt;li&gt; 可以索引各种常用类型文档，实现桌面文档检索。 &lt;/li&gt;&lt;li&gt;单台PC服务器能索引上千万文档，可以用于中小型检索服务。 &lt;/li&gt;&lt;li&gt;可以自定义网页展示模板，或XML接口，轻松与各种系统整合。 &lt;/li&gt;&lt;li&gt;自动分析网页文本，提取新词，如人名，地名等。 &lt;/li&gt;&lt;li&gt;支持检索词自动推荐以及繁简转换功能。 &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a href="http://javenstudio.org/"&gt;© 2008 Javen-Studio&lt;/a&gt; &lt;a href="http://javenstudio.org/"&gt;http://javenstudio.org&lt;/a&gt; 咖啡小屋&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344303-3350451207270970484?l=javenstudio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javenstudio.blogspot.com/feeds/3350451207270970484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344303&amp;postID=3350451207270970484' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344303/posts/default/3350451207270970484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344303/posts/default/3350451207270970484'/><link rel='alternate' type='text/html' href='http://javenstudio.blogspot.com/2008/07/hawk069.html' title='Hawk搜索引擎平台0.6.9测试版(提供下载)'/><author><name>Javen-Studio</name><uri>http://www.blogger.com/profile/09021504944813976215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.cppblog.com/images/cppblog_com/javenstudio/94/o_longhorn.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344303.post-236671917288565357</id><published>2008-03-20T19:39:00.000-07:00</published><updated>2008-03-20T19:40:17.551-07:00</updated><title type='text'>欢迎光临 Javen-Studio 新网址：http://javenstudio.org</title><content type='html'>&lt;a href="http://javenstudio.org"&gt;欢迎光临 Javen-Studio 新网址：http://javenstudio.org&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344303-236671917288565357?l=javenstudio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javenstudio.blogspot.com/feeds/236671917288565357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344303&amp;postID=236671917288565357' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344303/posts/default/236671917288565357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344303/posts/default/236671917288565357'/><link rel='alternate' type='text/html' href='http://javenstudio.blogspot.com/2008/03/javen-studio-httpjavenstudioorg.html' title='欢迎光临 Javen-Studio 新网址：http://javenstudio.org'/><author><name>Javen-Studio</name><uri>http://www.blogger.com/profile/09021504944813976215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.cppblog.com/images/cppblog_com/javenstudio/94/o_longhorn.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344303.post-951086578035617134</id><published>2008-03-20T19:34:00.001-07:00</published><updated>2008-03-20T19:37:19.092-07:00</updated><title type='text'>Hawk 搜索引擎平台 0.4.50 开发版</title><content type='html'>&lt;a href="http://javenstudio.org/"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px;" src="http://javenstudio.org/static/release/hawk0435-screenshot_thumb.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;Hawk 搜索引擎平台 0.4.50 开发版&lt;/strong&gt;&lt;br /&gt; Hawk 搜索引擎平台是面向中小型网站，可以定制的垂直搜索引擎平台。本搜索引擎平台目标是方便用户搭建站内搜索、某个领域的垂直搜索、以及检索个人文档以及自己关注的网站信息的桌面搜索等应用领域。它改造自Lucene，Hadoop和Nutch系统，是纯Java的搜索平台软件，可以运行于Windows及Linux等平台，具备基本的抓取、索引和检索功能，本搜索引擎将免费提供，欢迎大家测试和使用，谢谢！ Hawk 搜索引擎平台技术特点简介 &lt;br /&gt;改造Hadoop中MapReduce和JobTracker，TaskTracker的结构，以实现可以在Windows/Linux跨平台执行job，并将Map和Reduce分离以实现可以独立执行Map或者Reduce的任务，减少重复的数据处理。Map和Reduce分别代之Processor和Combiner两个独立的Task。以上改造为实现将来更轻量级的分布式计算做准备，而无需像Hadoop一样需建立庞大的cluster集群来进行分布式存储和计算。 &lt;br /&gt;改造Nutch结构，改造索引和segment存储格式及内容，简化部分处理流程，并把改造后的Hadoop系统与之整合。为支持单机千万级的索引量重新设计，同时为实现将来软件模块化做准备，如OSGI或更轻量级架构。 &lt;br /&gt;全新的管理界面的设计，以与Windows相似的操作界面呈现，并支持国际化语言，目前支持英文和中文界面。 &lt;br /&gt;支持自然语言语法分析及语义识别。网页正文智能识别和提取，及新词自动分析和提取功能，持续改进中。 &lt;br /&gt;&lt;a href="http://javenstudio.org"&gt;© 2008 Javen-Studio http://javenstudio.org 咖啡小屋&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344303-951086578035617134?l=javenstudio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javenstudio.blogspot.com/feeds/951086578035617134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344303&amp;postID=951086578035617134' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344303/posts/default/951086578035617134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344303/posts/default/951086578035617134'/><link rel='alternate' type='text/html' href='http://javenstudio.blogspot.com/2008/03/hawk-0450.html' title='Hawk 搜索引擎平台 0.4.50 开发版'/><author><name>Javen-Studio</name><uri>http://www.blogger.com/profile/09021504944813976215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.cppblog.com/images/cppblog_com/javenstudio/94/o_longhorn.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344303.post-6514575962176559179</id><published>2008-02-21T10:36:00.000-08:00</published><updated>2008-02-21T10:37:47.288-08:00</updated><title type='text'>Annotated Hadoop （源码剖析）</title><content type='html'>Hadoop目前是Apache Lucene下的一个子项目，它最初是从Nutch项目中分离出来的专门负责分布式存储以及分布式运算的项目。简单地说来，Hadoop是一个可以更容易开发和运行处理大规模数据的软件平台。本文先从源码角度剖析MapReduce框架及运行原理。&lt;br /&gt;&lt;br /&gt;Annotated Hadoop: 第一节 Hadoop是什么&lt;br /&gt;&lt;a href="http://www.cppblog.com/javenstudio/articles/43072.html"&gt;http://www.cppblog.com/javenstudio/articles/43072.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Annotated Hadoop: 第二节 MapReduce框架结构 &lt;br /&gt;&lt;a href="http://www.cppblog.com/javenstudio/articles/43073.html"&gt;http://www.cppblog.com/javenstudio/articles/43073.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Annotated Hadoop: 第三节 MapReduce工作原理&lt;br /&gt;&lt;a href="http://www.cppblog.com/javenstudio/articles/43075.html"&gt;http://www.cppblog.com/javenstudio/articles/43075.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;未完待续&lt;br /&gt;Annotated Hadoop 作者：naven 日期：2007-12-29&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344303-6514575962176559179?l=javenstudio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javenstudio.blogspot.com/feeds/6514575962176559179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344303&amp;postID=6514575962176559179' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344303/posts/default/6514575962176559179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344303/posts/default/6514575962176559179'/><link rel='alternate' type='text/html' href='http://javenstudio.blogspot.com/2008/02/annotated-hadoop.html' title='Annotated Hadoop （源码剖析）'/><author><name>Javen-Studio</name><uri>http://www.blogger.com/profile/09021504944813976215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.cppblog.com/images/cppblog_com/javenstudio/94/o_longhorn.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344303.post-7831758693982174765</id><published>2008-02-20T10:51:00.000-08:00</published><updated>2008-02-20T10:53:23.339-08:00</updated><title type='text'>Hawk-0.4.35搜索引擎平台开发版发布</title><content type='html'>Hawk 搜索引擎平台是面向中小型网站，可以定制的垂直搜索引擎平台。本搜索引擎平台&lt;br /&gt;目标是方便用户搭建站内搜索、某个领域的垂直搜索、以及检索个人文档以及自己关注的&lt;br /&gt;网站信息的桌面搜索等应用领域。&lt;br /&gt;&lt;br /&gt;      &lt;a href="http://www.cppblog.com/javenstudio/articles/43021.html"&gt;http://www.cppblog.com/javenstudio/articles/43021.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344303-7831758693982174765?l=javenstudio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javenstudio.blogspot.com/feeds/7831758693982174765/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344303&amp;postID=7831758693982174765' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344303/posts/default/7831758693982174765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344303/posts/default/7831758693982174765'/><link rel='alternate' type='text/html' href='http://javenstudio.blogspot.com/2008/02/hawk-0435.html' title='Hawk-0.4.35搜索引擎平台开发版发布'/><author><name>Javen-Studio</name><uri>http://www.blogger.com/profile/09021504944813976215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.cppblog.com/images/cppblog_com/javenstudio/94/o_longhorn.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344303.post-3829749074303157844</id><published>2007-08-31T18:31:00.000-07:00</published><updated>2007-08-31T18:33:02.966-07:00</updated><title type='text'>Annotated Lucene：第五节 索引里有什么</title><content type='html'>&amp;nbsp;&lt;br /&gt;&lt;h1&gt;&lt;a name=_Toc166786094&gt;&lt;span&gt;&lt;span&gt;1&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;什么是索引&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;为了使用&lt;/span&gt;&lt;span&gt;Lucene&lt;/span&gt;&lt;span&gt;来索引数据，首先你得把它转换成一个纯文本（&lt;/span&gt;&lt;span&gt;plain-text&lt;/span&gt;&lt;span&gt;）&lt;/span&gt;&lt;span&gt;tokens&lt;/span&gt;&lt;span&gt;的数据流（&lt;/span&gt;&lt;span&gt;stream&lt;/span&gt;&lt;span&gt;），并通过它创建出&lt;/span&gt;&lt;span&gt;Document&lt;/span&gt;&lt;span&gt;对象，其包含的&lt;/span&gt;&lt;span&gt;Fields&lt;/span&gt;&lt;span&gt;成员容纳这些文本数据。一旦你准备好些&lt;/span&gt;&lt;span&gt;Document&lt;/span&gt;&lt;span&gt;对象，你就可以调用&lt;/span&gt;&lt;span&gt;IndexWriter&lt;/span&gt;&lt;span&gt;类的&lt;/span&gt;&lt;span&gt;addDocument(Document)&lt;/span&gt;&lt;span&gt;方法来传递这些对象到&lt;/span&gt;&lt;span&gt;Lucene&lt;/span&gt;&lt;span&gt;并写入索引中。当你做这些的时候，&lt;/span&gt;&lt;span&gt;Lucene&lt;/span&gt;&lt;span&gt;首先分析（&lt;/span&gt;&lt;span&gt;analyzer&lt;/span&gt;&lt;span&gt;）这些数据来使得它们更适合索引。详见《&lt;/span&gt;&lt;span&gt;Lucene In Action&lt;/span&gt;&lt;span&gt;》&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;下面先了解一下索引结构的一些术语。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;&lt;a name=_Toc166786095&gt;&lt;span&gt;&lt;span&gt;1.1&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;索引数据结构介绍&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;br /&gt;&lt;h3&gt;&lt;a name=_Toc166786096&gt;&lt;span&gt;&lt;span&gt;1.1.1&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;术语定义&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;Lucene&lt;/span&gt;&lt;span&gt;中基本的概念（&lt;/span&gt;&lt;span&gt;fundamental concepts&lt;/span&gt;&lt;span&gt;）是&lt;/span&gt;&lt;span&gt;index&lt;/span&gt;&lt;span&gt;、&lt;/span&gt;&lt;span&gt;Document&lt;/span&gt;&lt;span&gt;、&lt;/span&gt;&lt;span&gt;Field&lt;/span&gt;&lt;span&gt;和&lt;/span&gt;&lt;span&gt;term&lt;/span&gt;&lt;span&gt;。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;一条索引（&lt;/span&gt;&lt;span&gt;index&lt;/span&gt;&lt;span&gt;）包含（&lt;/span&gt;&lt;span&gt;contains&lt;/span&gt;&lt;span&gt;）了一连串（&lt;/span&gt;&lt;span&gt;a sequence of&lt;/span&gt;&lt;span&gt;）文档（&lt;/span&gt;&lt;span&gt;documents&lt;/span&gt;&lt;span&gt;）。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;一个文档（&lt;/span&gt;&lt;span&gt;document&lt;/span&gt;&lt;span&gt;）是由一连串&lt;/span&gt;&lt;span&gt;fields&lt;/span&gt;&lt;span&gt;组成。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;一个&lt;/span&gt;&lt;span&gt;field&lt;/span&gt;&lt;span&gt;是由一连串命名了（&lt;/span&gt;&lt;span&gt;a named sequence of&lt;/span&gt;&lt;span&gt;）的&lt;/span&gt;&lt;span&gt;terms&lt;/span&gt;&lt;span&gt;组成。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;一个&lt;/span&gt;&lt;span&gt;term&lt;/span&gt;&lt;span&gt;是一个&lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt;（字符串）。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;相同的字符串（&lt;/span&gt;&lt;span&gt;same string&lt;/span&gt;&lt;span&gt;）但是在两个不同的&lt;/span&gt;&lt;span&gt;fields&lt;/span&gt;&lt;span&gt;中被认为（&lt;/span&gt;&lt;span&gt;considered&lt;/span&gt;&lt;span&gt;）是不同的&lt;/span&gt;&lt;span&gt;term&lt;/span&gt;&lt;span&gt;。因此（&lt;/span&gt;&lt;span&gt;thus&lt;/span&gt;&lt;span&gt;）&lt;/span&gt;&lt;span&gt;term&lt;/span&gt;&lt;span&gt;被描述为（&lt;/span&gt;&lt;span&gt;represent as&lt;/span&gt;&lt;span&gt;）一对字符串（&lt;/span&gt;&lt;span&gt;a pair of strings&lt;/span&gt;&lt;span&gt;），第一个&lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt;取名（&lt;/span&gt;&lt;span&gt;naming&lt;/span&gt;&lt;span&gt;）为该&lt;/span&gt;&lt;span&gt;field&lt;/span&gt;&lt;span&gt;的名字，第二个&lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt;取名为包含在该&lt;/span&gt;&lt;span&gt;field&lt;/span&gt;&lt;span&gt;中的文本（&lt;/span&gt;&lt;span&gt;text within the field&lt;/span&gt;&lt;span&gt;）。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;&lt;a name=_Toc166786097&gt;&lt;span&gt;&lt;span&gt;1.1.2&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;倒排索引（&lt;span&gt;inverted indexing&lt;/span&gt;）&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;索引（&lt;/span&gt;&lt;span&gt;index&lt;/span&gt;&lt;span&gt;）存储&lt;/span&gt;&lt;span&gt;terms&lt;/span&gt;&lt;span&gt;的统计数据（&lt;/span&gt;&lt;span&gt;statistics about terms&lt;/span&gt;&lt;span&gt;），为了使得基于&lt;/span&gt;&lt;span&gt;term&lt;/span&gt;&lt;span&gt;的检索（&lt;/span&gt;&lt;span&gt;term-based search&lt;/span&gt;&lt;span&gt;）效率更高（&lt;/span&gt;&lt;span&gt;more efficient&lt;/span&gt;&lt;span&gt;）。&lt;/span&gt;&lt;span&gt;Lucene&lt;/span&gt;&lt;span&gt;的索引分成（&lt;/span&gt;&lt;span&gt;fall into&lt;/span&gt;&lt;span&gt;）被广为熟悉的（&lt;/span&gt;&lt;span&gt;known as&lt;/span&gt;&lt;span&gt;）索引种类（&lt;/span&gt;&lt;span&gt;family of indexex&lt;/span&gt;&lt;span&gt;）叫做倒排索引（&lt;/span&gt;&lt;span&gt;inverted index&lt;/span&gt;&lt;span&gt;）。这是因为它可以列举（&lt;/span&gt;&lt;span&gt;list&lt;/span&gt;&lt;span&gt;），对一个&lt;/span&gt;&lt;span&gt;term&lt;/span&gt;&lt;span&gt;来说，所有包含它的文档（&lt;/span&gt;&lt;span&gt;documents that contain it&lt;/span&gt;&lt;span&gt;）。这与自然关联规则（&lt;/span&gt;&lt;span&gt;natural relationship&lt;/span&gt;&lt;span&gt;）是相反，即由&lt;/span&gt;&lt;span&gt;documents&lt;/span&gt;&lt;span&gt;列举它所包含的&lt;/span&gt;&lt;span&gt;terms&lt;/span&gt;&lt;span&gt;。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;&lt;a name=_Toc166786098&gt;&lt;span&gt;&lt;span&gt;1.1.3&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;Fields&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;span&gt;的种类&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;在&lt;/span&gt;&lt;span&gt;Lucene&lt;/span&gt;&lt;span&gt;中，&lt;/span&gt;&lt;span&gt;fields&lt;/span&gt;&lt;span&gt;可以被存储（&lt;/span&gt;&lt;span&gt;stored&lt;/span&gt;&lt;span&gt;），在这种情况（&lt;/span&gt;&lt;span&gt;in which case&lt;/span&gt;&lt;span&gt;）下它们的文本被逐字地（&lt;/span&gt;&lt;span&gt;literally&lt;/span&gt;&lt;span&gt;）以一种非倒排的方式（&lt;/span&gt;&lt;span&gt;in non-inverted manner&lt;/span&gt;&lt;span&gt;）存储进&lt;/span&gt;&lt;span&gt;index&lt;/span&gt;&lt;span&gt;中。那些被倒排的&lt;/span&gt;&lt;span&gt;fields&lt;/span&gt;&lt;span&gt;（&lt;/span&gt;&lt;span&gt;that are inverted&lt;/span&gt;&lt;span&gt;）称为（&lt;/span&gt;&lt;span&gt;called&lt;/span&gt;&lt;span&gt;）被索引（&lt;/span&gt;&lt;span&gt;indexed&lt;/span&gt;&lt;span&gt;）。一个&lt;/span&gt;&lt;span&gt;field&lt;/span&gt;&lt;span&gt;可以都被存储（&lt;/span&gt;&lt;span&gt;stored&lt;/span&gt;&lt;span&gt;）并且被索引（&lt;/span&gt;&lt;span&gt;indexed&lt;/span&gt;&lt;span&gt;）。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;一个&lt;/span&gt;&lt;span&gt;field&lt;/span&gt;&lt;span&gt;的文本可以被分解为（&lt;/span&gt;&lt;span&gt;be tokenized into&lt;/span&gt;&lt;span&gt;）&lt;/span&gt;&lt;span&gt;terms&lt;/span&gt;&lt;span&gt;以便被索引（&lt;/span&gt;&lt;span&gt;indexed&lt;/span&gt;&lt;span&gt;），或者&lt;/span&gt;&lt;span&gt;field&lt;/span&gt;&lt;span&gt;的文本可以被逐字地使用为（&lt;/span&gt;&lt;span&gt;used literally as&lt;/span&gt;&lt;span&gt;）一个&lt;/span&gt;&lt;span&gt;term&lt;/span&gt;&lt;span&gt;来被索引（&lt;/span&gt;&lt;span&gt;be indexed&lt;/span&gt;&lt;span&gt;）。大多数&lt;/span&gt;&lt;span&gt;fields&lt;/span&gt;&lt;span&gt;被分解（&lt;/span&gt;&lt;span&gt;be tokenized&lt;/span&gt;&lt;span&gt;），但是有时候对某种唯一性（&lt;/span&gt;&lt;span&gt;certain identifier&lt;/span&gt;&lt;span&gt;）的&lt;/span&gt;&lt;span&gt;field&lt;/span&gt;&lt;span&gt;来逐字地索引（&lt;/span&gt;&lt;span&gt;be indexed literally&lt;/span&gt;&lt;span&gt;）又是非常有用的，如&lt;/span&gt;&lt;span&gt;url&lt;/span&gt;&lt;span&gt;。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;&lt;a name=_Toc166786099&gt;&lt;span&gt;&lt;span&gt;1.1.4&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;片断（&lt;span&gt;segments&lt;/span&gt;）&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;Lucene&lt;/span&gt;&lt;span&gt;的索引可以由多个复合的子索引（&lt;/span&gt;&lt;span&gt;multiple sub-indexes&lt;/span&gt;&lt;span&gt;）或者片断（&lt;/span&gt;&lt;span&gt;segments&lt;/span&gt;&lt;span&gt;）组成（&lt;/span&gt;&lt;span&gt;be composed of&lt;/span&gt;&lt;span&gt;）。每一个&lt;/span&gt;&lt;span&gt;segment&lt;/span&gt;&lt;span&gt;都是一个完全独立的索引（&lt;/span&gt;&lt;span&gt;fully independent index&lt;/span&gt;&lt;span&gt;），它能够被分离地进行检索（&lt;/span&gt;&lt;span&gt;be searched seperately&lt;/span&gt;&lt;span&gt;）。索引按如下方式进行演化（&lt;/span&gt;&lt;span&gt;evolve&lt;/span&gt;&lt;span&gt;）：&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;&lt;span&gt;1.&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;为新添加的文档（&lt;/span&gt;&lt;span&gt;newly added documents&lt;/span&gt;&lt;span&gt;）创建新的片断（&lt;/span&gt;&lt;span&gt;segments&lt;/span&gt;&lt;span&gt;）。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;&lt;span&gt;2.&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;合并已存在的片断（&lt;/span&gt;&lt;span&gt;merging existing segments&lt;/span&gt;&lt;span&gt;）。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;检索可以涉及（&lt;/span&gt;&lt;span&gt;involve&lt;/span&gt;&lt;span&gt;）多个复合（&lt;/span&gt;&lt;span&gt;multiple&lt;/span&gt;&lt;span&gt;）的&lt;/span&gt;&lt;span&gt;segments&lt;/span&gt;&lt;span&gt;，并且&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;或者多个复合（&lt;/span&gt;&lt;span&gt;multiple&lt;/span&gt;&lt;span&gt;）的&lt;/span&gt;&lt;span&gt;indexes&lt;/span&gt;&lt;span&gt;。每一个&lt;/span&gt;&lt;span&gt;index&lt;/span&gt;&lt;span&gt;潜在地（&lt;/span&gt;&lt;span&gt;potentially&lt;/span&gt;&lt;span&gt;）包含（&lt;/span&gt;&lt;span&gt;composed of&lt;/span&gt;&lt;span&gt;）一套（&lt;/span&gt;&lt;span&gt;a set of&lt;/span&gt;&lt;span&gt;）&lt;/span&gt;&lt;span&gt;segments&lt;/span&gt;&lt;span&gt;。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;&lt;a name=_Toc166786100&gt;&lt;span&gt;&lt;span&gt;1.1.5&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;文档编号（&lt;span&gt;document numbers&lt;/span&gt;）&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;在内部（&lt;/span&gt;&lt;span&gt;internally&lt;/span&gt;&lt;span&gt;），&lt;/span&gt;&lt;span&gt;Lucene&lt;/span&gt;&lt;span&gt;通过一个整数的（&lt;/span&gt;&lt;span&gt;interger&lt;/span&gt;&lt;span&gt;）文档编号（&lt;/span&gt;&lt;span&gt;document number&lt;/span&gt;&lt;span&gt;）来表示文档。第一篇被添加到索引中的文档编号为&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;（&lt;/span&gt;&lt;span&gt;be numbered zero&lt;/span&gt;&lt;span&gt;），每一篇随后（&lt;/span&gt;&lt;span&gt;subsequent&lt;/span&gt;&lt;span&gt;）被添加的&lt;/span&gt;&lt;span&gt;document&lt;/span&gt;&lt;span&gt;获得一个比前一篇更大的数字（&lt;/span&gt;&lt;span&gt;a number one greater than the previous&lt;/span&gt;&lt;span&gt;）。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;需要注意的是一篇文档的编号（&lt;/span&gt;&lt;span&gt;document’s number&lt;/span&gt;&lt;span&gt;）可以更改，所以在&lt;/span&gt;&lt;span&gt;Lucene&lt;/span&gt;&lt;span&gt;之外（&lt;/span&gt;&lt;span&gt;outside of&lt;/span&gt;&lt;span&gt;）存储这些编号时需要特别小心（&lt;/span&gt;&lt;span&gt;caution should be taken&lt;/span&gt;&lt;span&gt;）。详细地说（&lt;/span&gt;&lt;span&gt;in particular&lt;/span&gt;&lt;span&gt;），编号在如下的情况（&lt;/span&gt;&lt;span&gt;following situations&lt;/span&gt;&lt;span&gt;）可以更改：&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;1 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;存储在每个&lt;/span&gt;&lt;span&gt;segment&lt;/span&gt;&lt;span&gt;中的编号仅仅是在所在的&lt;/span&gt;&lt;span&gt;segment&lt;/span&gt;&lt;span&gt;中是唯一的（&lt;/span&gt;&lt;span&gt;unique&lt;/span&gt;&lt;span&gt;），在它能够被使用在（&lt;/span&gt;&lt;span&gt;be used in&lt;/span&gt;&lt;span&gt;）一个更大的上下文（&lt;/span&gt;&lt;span&gt;a larger context&lt;/span&gt;&lt;span&gt;）中前必须被转变（&lt;/span&gt;&lt;span&gt;converted&lt;/span&gt;&lt;span&gt;）。标准的技术（&lt;/span&gt;&lt;span&gt;standard technique&lt;/span&gt;&lt;span&gt;）是给每一个&lt;/span&gt;&lt;span&gt;segment&lt;/span&gt;&lt;span&gt;分配（&lt;/span&gt;&lt;span&gt;allocate&lt;/span&gt;&lt;span&gt;）一个范围的值（&lt;/span&gt;&lt;span&gt;a range of values&lt;/span&gt;&lt;span&gt;），基于该&lt;/span&gt;&lt;span&gt;segment&lt;/span&gt;&lt;span&gt;所使用的编号的范围（&lt;/span&gt;&lt;span&gt;the range of numbers&lt;/span&gt;&lt;span&gt;）。为了将一篇文档的编号从一个&lt;/span&gt;&lt;span&gt;segment&lt;/span&gt;&lt;span&gt;转变为一个扩展的值（&lt;/span&gt;&lt;span&gt;an external value&lt;/span&gt;&lt;span&gt;），该片断的基础的文档编号（&lt;/span&gt;&lt;span&gt;base document number&lt;/span&gt;&lt;span&gt;）被添加（&lt;/span&gt;&lt;span&gt;is added&lt;/span&gt;&lt;span&gt;）。为了将一个扩展的值（&lt;/span&gt;&lt;span&gt;external value&lt;/span&gt;&lt;span&gt;）转变回一个&lt;/span&gt;&lt;span&gt;segment&lt;/span&gt;&lt;span&gt;的特定的值（&lt;/span&gt;&lt;span&gt;specific value&lt;/span&gt;&lt;span&gt;），该&lt;/span&gt;&lt;span&gt;segment&lt;/span&gt;&lt;span&gt;将该扩展的值所在的范围标识出来（&lt;/span&gt;&lt;span&gt;be indentified&lt;/span&gt;&lt;span&gt;），并且该&lt;/span&gt;&lt;span&gt;segment&lt;/span&gt;&lt;span&gt;的基础值（&lt;/span&gt;&lt;span&gt;base value&lt;/span&gt;&lt;span&gt;）将被减少（&lt;/span&gt;&lt;span&gt;substracted&lt;/span&gt;&lt;span&gt;）。例如，两个包含&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;篇文档的&lt;/span&gt;&lt;span&gt;segments&lt;/span&gt;&lt;span&gt;可能会被合并（&lt;/span&gt;&lt;span&gt;combined&lt;/span&gt;&lt;span&gt;），所以第一个&lt;/span&gt;&lt;span&gt;segment&lt;/span&gt;&lt;span&gt;有一个基础的值（&lt;/span&gt;&lt;span&gt;base value&lt;/span&gt;&lt;span&gt;）为&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;，第二个&lt;/span&gt;&lt;span&gt;segment&lt;/span&gt;&lt;span&gt;则为&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;。在第二个&lt;/span&gt;&lt;span&gt;segment&lt;/span&gt;&lt;span&gt;中的第&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;篇文档（&lt;/span&gt;&lt;span&gt;document three from the second segment&lt;/span&gt;&lt;span&gt;）将有一个扩展的值为&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;当文档被删除的时候，在编号序列中（&lt;/span&gt;&lt;span&gt;in the numbering&lt;/span&gt;&lt;span&gt;）将产生（&lt;/span&gt;&lt;span&gt;created&lt;/span&gt;&lt;span&gt;）间隔段（&lt;/span&gt;&lt;span&gt;gaps&lt;/span&gt;&lt;span&gt;）。这些最后（&lt;/span&gt;&lt;span&gt;eventually&lt;/span&gt;&lt;span&gt;）在索引通过合并演进时（&lt;/span&gt;&lt;span&gt;index evolves through merging&lt;/span&gt;&lt;span&gt;）将会被清除（&lt;/span&gt;&lt;span&gt;removed&lt;/span&gt;&lt;span&gt;）。当&lt;/span&gt;&lt;span&gt;segments&lt;/span&gt;&lt;span&gt;被合并后（&lt;/span&gt;&lt;span&gt;merged&lt;/span&gt;&lt;span&gt;），已删除的文档将会被丢弃（&lt;/span&gt;&lt;span&gt;dropped&lt;/span&gt;&lt;span&gt;），一个刚被合并的（&lt;/span&gt;&lt;span&gt;freshly-merged&lt;/span&gt;&lt;span&gt;）&lt;/span&gt;&lt;span&gt;segment&lt;/span&gt;&lt;span&gt;因此在它的编号序列中（&lt;/span&gt;&lt;span&gt;in its numbering&lt;/span&gt;&lt;span&gt;）不再有间隔段（&lt;/span&gt;&lt;span&gt;gaps&lt;/span&gt;&lt;span&gt;）。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;&lt;span&gt;&lt;span&gt;1.1.6&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;索引结构概述&lt;/span&gt;&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;每一个片断的索引（&lt;/span&gt;&lt;span&gt;segment index&lt;/span&gt;&lt;span&gt;）管理（&lt;/span&gt;&lt;span&gt;maintains&lt;/span&gt;&lt;span&gt;）如下的数据：&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;span&gt;Fields&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span&gt;名称：&lt;/span&gt;&lt;/strong&gt;&lt;span&gt;这包含了（&lt;/span&gt;&lt;span&gt;contains&lt;/span&gt;&lt;span&gt;）在索引中使用的一系列&lt;/span&gt;&lt;span&gt;fields&lt;/span&gt;&lt;span&gt;的名称（&lt;/span&gt;&lt;span&gt;the set of field names&lt;/span&gt;&lt;span&gt;）。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;span&gt;已存储的&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span&gt;field&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span&gt;的值：&lt;/span&gt;&lt;/strong&gt;&lt;span&gt;它包含了，对每篇文档来说，一个属性&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;值数据对（&lt;/span&gt;&lt;span&gt;attribute-value pairs&lt;/span&gt;&lt;span&gt;）的清单（&lt;/span&gt;&lt;span&gt;a list of&lt;/span&gt;&lt;span&gt;），其中属性即为&lt;/span&gt;&lt;span&gt;field&lt;/span&gt;&lt;span&gt;的名字。这些被用来存储关于文档的备用信息（&lt;/span&gt;&lt;span&gt;auxiliary information&lt;/span&gt;&lt;span&gt;），比如它的标题（&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;）、&lt;/span&gt;&lt;span&gt;url&lt;/span&gt;&lt;span&gt;、或者一个访问一个数据库（&lt;/span&gt;&lt;span&gt;database&lt;/span&gt;&lt;span&gt;）的唯一标识（&lt;/span&gt;&lt;span&gt;identifier&lt;/span&gt;&lt;span&gt;）。这套存储的&lt;/span&gt;&lt;span&gt;fields&lt;/span&gt;&lt;span&gt;就是那些在检索时对每一个命中的（&lt;/span&gt;&lt;span&gt;hits&lt;/span&gt;&lt;span&gt;）文档所返回的（&lt;/span&gt;&lt;span&gt;returned&lt;/span&gt;&lt;span&gt;）信息。这些是通过文档编号（&lt;/span&gt;&lt;span&gt;document number&lt;/span&gt;&lt;span&gt;）来做为&lt;/span&gt;&lt;span&gt;key&lt;/span&gt;&lt;span&gt;得到的。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;span&gt;Term&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span&gt;字典（&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span&gt;dictionary&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span&gt;）：&lt;/span&gt;&lt;/strong&gt;&lt;span&gt;一个包含（&lt;/span&gt;&lt;span&gt;contains&lt;/span&gt;&lt;span&gt;）所有&lt;/span&gt;&lt;span&gt;terms&lt;/span&gt;&lt;span&gt;的字典，被使用在所有文档中所有被索引的&lt;/span&gt;&lt;span&gt;fields&lt;/span&gt;&lt;span&gt;中。它还包含了该&lt;/span&gt;&lt;span&gt;term&lt;/span&gt;&lt;span&gt;所在的文档的数目（&lt;/span&gt;&lt;span&gt;the number of documents which contains the term&lt;/span&gt;&lt;span&gt;），并且指向了（&lt;/span&gt;&lt;span&gt;pointer to&lt;/span&gt;&lt;span&gt;）&lt;/span&gt;&lt;span&gt;term&lt;/span&gt;&lt;span&gt;的频率（&lt;/span&gt;&lt;span&gt;frequency&lt;/span&gt;&lt;span&gt;）和接近度（&lt;/span&gt;&lt;span&gt;proximity&lt;/span&gt;&lt;span&gt;）的数据（&lt;/span&gt;&lt;span&gt;data&lt;/span&gt;&lt;span&gt;）。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;span&gt;Term&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span&gt;频率数据（&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span&gt;frequency data&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span&gt;）：&lt;/span&gt;&lt;/strong&gt;&lt;span&gt;对字典中的每一个&lt;/span&gt;&lt;span&gt;term&lt;/span&gt;&lt;span&gt;来说，所有包含该&lt;/span&gt;&lt;span&gt;term&lt;/span&gt;&lt;span&gt;（&lt;/span&gt;&lt;span&gt;contains the term&lt;/span&gt;&lt;span&gt;）的文档的编号（&lt;/span&gt;&lt;span&gt;numbers of all documents&lt;/span&gt;&lt;span&gt;），以及该&lt;/span&gt;&lt;span&gt;term&lt;/span&gt;&lt;span&gt;出现在该文档中的频率（&lt;/span&gt;&lt;span&gt;frequency&lt;/span&gt;&lt;span&gt;）。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;span&gt;Term&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span&gt;接近度数据（&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span&gt;proximity data&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span&gt;）：&lt;/span&gt;&lt;/strong&gt;&lt;span&gt;对字典中的每一个&lt;/span&gt;&lt;span&gt;term&lt;/span&gt;&lt;span&gt;来说，该&lt;/span&gt;&lt;span&gt;term&lt;/span&gt;&lt;span&gt;出现在（&lt;/span&gt;&lt;span&gt;occur&lt;/span&gt;&lt;span&gt;）每一篇文档中的位置（&lt;/span&gt;&lt;span&gt;positions&lt;/span&gt;&lt;span&gt;）。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;span&gt;调整因子（&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span&gt;normalization factors&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span&gt;）：&lt;/span&gt;&lt;/strong&gt;&lt;span&gt;对每一篇文档的每一个&lt;/span&gt;&lt;span&gt;field&lt;/span&gt;&lt;span&gt;来说，为一个存储的值（&lt;/span&gt;&lt;span&gt;a value is stored&lt;/span&gt;&lt;span&gt;）用来加入到（&lt;/span&gt;&lt;span&gt;multiply into&lt;/span&gt;&lt;span&gt;）命中该&lt;/span&gt;&lt;span&gt;field&lt;/span&gt;&lt;span&gt;的分数（&lt;/span&gt;&lt;span&gt;score for hits on that field&lt;/span&gt;&lt;span&gt;）中。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;span&gt;Term&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span&gt;向量（&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span&gt;vectors&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span&gt;）：&lt;/span&gt;&lt;/strong&gt;&lt;span&gt;对每一篇文档的每一个&lt;/span&gt;&lt;span&gt;field&lt;/span&gt;&lt;span&gt;来说，&lt;/span&gt;&lt;span&gt;term&lt;/span&gt;&lt;span&gt;向量（有时候被称做文档向量）可以被存储。一个&lt;/span&gt;&lt;span&gt;term&lt;/span&gt;&lt;span&gt;向量由&lt;/span&gt;&lt;span&gt;term&lt;/span&gt;&lt;span&gt;文本和&lt;/span&gt;&lt;span&gt;term&lt;/span&gt;&lt;span&gt;的频率（&lt;/span&gt;&lt;span&gt;frequency&lt;/span&gt;&lt;span&gt;）组成（&lt;/span&gt;&lt;span&gt;consists of&lt;/span&gt;&lt;span&gt;）。怎么添加&lt;/span&gt;&lt;span&gt;term&lt;/span&gt;&lt;span&gt;向量到你的索引中请参考&lt;/span&gt;&lt;span&gt;Field&lt;/span&gt;&lt;span&gt;类的构造方法（&lt;/span&gt;&lt;span&gt;constructors&lt;/span&gt;&lt;span&gt;）。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;span&gt;删除的文档（&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span&gt;deleted documents&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span&gt;）：&lt;/span&gt;&lt;/strong&gt;&lt;span&gt;一个可选的（&lt;/span&gt;&lt;span&gt;optional&lt;/span&gt;&lt;span&gt;）文件标示（&lt;/span&gt;&lt;span&gt;indicating&lt;/span&gt;&lt;span&gt;）哪一篇文档被删除。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;关于这些项的详细信息在随后的章节（&lt;/span&gt;&lt;span&gt;subsequent sections&lt;/span&gt;&lt;span&gt;）中逐一介绍。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;&lt;span&gt;&lt;span&gt;1.1.7&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;索引文件中定义的数据类型&lt;/span&gt;&lt;/h3&gt;&lt;br /&gt;&lt;div align=center&gt;&lt;br /&gt;&lt;table cellSpacing=0 cellPadding=0 border=0&gt;&lt;br /&gt;    &lt;tbody&gt;&lt;br /&gt;        &lt;tr&gt;&lt;br /&gt;            &lt;td vAlign=top width=103&gt;&lt;br /&gt;            &lt;p&gt;&lt;strong&gt;&lt;span&gt;数据类型&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=144&gt;&lt;br /&gt;            &lt;p&gt;&lt;strong&gt;&lt;span&gt;所占字节长度（字节）&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=380&gt;&lt;br /&gt;            &lt;p&gt;&lt;strong&gt;&lt;span&gt;说明&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;        &lt;/tr&gt;&lt;br /&gt;        &lt;tr&gt;&lt;br /&gt;            &lt;td vAlign=top width=103&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;Byte&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=144&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;1&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=380&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;基本数据类型，其他数据类型以此为基础定义&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;        &lt;/tr&gt;&lt;br /&gt;        &lt;tr&gt;&lt;br /&gt;            &lt;td vAlign=top width=103&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;UInt32&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=144&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;4&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=380&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;位无符号整数，高位优先&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;        &lt;/tr&gt;&lt;br /&gt;        &lt;tr&gt;&lt;br /&gt;            &lt;td vAlign=top width=103&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;UInt64&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=144&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;8&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=380&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;位无符号整数，高位优先&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;        &lt;/tr&gt;&lt;br /&gt;        &lt;tr&gt;&lt;br /&gt;            &lt;td vAlign=top width=103&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;VInt&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=144&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;不定，最少&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;字节&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=380&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;动态长度整数，&lt;span&gt;每字节的最高位表明还剩多少字节，每字节的低七位表明整数的值，高位优先。可以认为值可以为无限大。其示例如下&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;div align=center&gt;&lt;br /&gt;            &lt;table cellSpacing=0 cellPadding=0 border=0&gt;&lt;br /&gt;                &lt;tbody&gt;&lt;br /&gt;                    &lt;tr&gt;&lt;br /&gt;                        &lt;td vAlign=top width=82&gt;&lt;br /&gt;                        &lt;p&gt;&lt;span&gt;值&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                        &lt;td vAlign=top width=84&gt;&lt;br /&gt;                        &lt;p&gt;&lt;span&gt;字节&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                        &lt;td vAlign=top width=84&gt;&lt;br /&gt;                        &lt;p&gt;&lt;span&gt;字节&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                        &lt;td vAlign=top width=78&gt;&lt;br /&gt;                        &lt;p&gt;&lt;span&gt;字节&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                    &lt;/tr&gt;&lt;br /&gt;                    &lt;tr&gt;&lt;br /&gt;                        &lt;td vAlign=top width=82&gt;&lt;br /&gt;                        &lt;p&gt;&lt;span&gt;0&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                        &lt;td vAlign=top width=84&gt;&lt;br /&gt;                        &lt;p&gt;&lt;span&gt;00000000&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                        &lt;td vAlign=top width=84&gt;&lt;br /&gt;                        &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                        &lt;td vAlign=top width=78&gt;&lt;br /&gt;                        &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                    &lt;/tr&gt;&lt;br /&gt;                    &lt;tr&gt;&lt;br /&gt;                        &lt;td vAlign=top width=82&gt;&lt;br /&gt;                        &lt;p&gt;&lt;span&gt;1&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                        &lt;td vAlign=top width=84&gt;&lt;br /&gt;                        &lt;p&gt;&lt;span&gt;00000001&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                        &lt;td vAlign=top width=84&gt;&lt;br /&gt;                        &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                        &lt;td vAlign=top width=78&gt;&lt;br /&gt;                        &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                    &lt;/tr&gt;&lt;br /&gt;                    &lt;tr&gt;&lt;br /&gt;                        &lt;td vAlign=top width=82&gt;&lt;br /&gt;                        &lt;p&gt;&lt;span&gt;2&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                        &lt;td vAlign=top width=84&gt;&lt;br /&gt;                        &lt;p&gt;&lt;span&gt;00000010&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                        &lt;td vAlign=top width=84&gt;&lt;br /&gt;                        &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                        &lt;td vAlign=top width=78&gt;&lt;br /&gt;                        &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                    &lt;/tr&gt;&lt;br /&gt;                    &lt;tr&gt;&lt;br /&gt;                        &lt;td vAlign=top width=82&gt;&lt;br /&gt;                        &lt;p&gt;&lt;span&gt;127&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                        &lt;td vAlign=top width=84&gt;&lt;br /&gt;                        &lt;p&gt;&lt;span&gt;01111111&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                        &lt;td vAlign=top width=84&gt;&lt;br /&gt;                        &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                        &lt;td vAlign=top width=78&gt;&lt;br /&gt;                        &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                    &lt;/tr&gt;&lt;br /&gt;                    &lt;tr&gt;&lt;br /&gt;                        &lt;td vAlign=top width=82&gt;&lt;br /&gt;                        &lt;p&gt;&lt;span&gt;128&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                        &lt;td vAlign=top width=84&gt;&lt;br /&gt;                        &lt;p&gt;&lt;span&gt;10000000&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                        &lt;td vAlign=top width=84&gt;&lt;br /&gt;                        &lt;p&gt;&lt;span&gt;00000001&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                        &lt;td vAlign=top width=78&gt;&lt;br /&gt;                        &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                    &lt;/tr&gt;&lt;br /&gt;                    &lt;tr&gt;&lt;br /&gt;                        &lt;td vAlign=top width=82&gt;&lt;br /&gt;                        &lt;p&gt;&lt;span&gt;129&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                        &lt;td vAlign=top width=84&gt;&lt;br /&gt;                        &lt;p&gt;&lt;span&gt;10000001&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                        &lt;td vAlign=top width=84&gt;&lt;br /&gt;                        &lt;p&gt;&lt;span&gt;00000001&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                        &lt;td vAlign=top width=78&gt;&lt;br /&gt;                        &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                    &lt;/tr&gt;&lt;br /&gt;                    &lt;tr&gt;&lt;br /&gt;                        &lt;td vAlign=top width=82&gt;&lt;br /&gt;                        &lt;p&gt;&lt;span&gt;130&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                        &lt;td vAlign=top width=84&gt;&lt;br /&gt;                        &lt;p&gt;&lt;span&gt;10000010&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                        &lt;td vAlign=top width=84&gt;&lt;br /&gt;                        &lt;p&gt;&lt;span&gt;00000001&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                        &lt;td vAlign=top width=78&gt;&lt;br /&gt;                        &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                    &lt;/tr&gt;&lt;br /&gt;                    &lt;tr&gt;&lt;br /&gt;                        &lt;td vAlign=top width=82&gt;&lt;br /&gt;                        &lt;p&gt;&lt;span&gt;16383&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                        &lt;td vAlign=top width=84&gt;&lt;br /&gt;                        &lt;p&gt;&lt;span&gt;10000000&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                        &lt;td vAlign=top width=84&gt;&lt;br /&gt;                        &lt;p&gt;&lt;span&gt;10000000&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                        &lt;td vAlign=top width=78&gt;&lt;br /&gt;                        &lt;p&gt;&lt;span&gt;00000001&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                    &lt;/tr&gt;&lt;br /&gt;                    &lt;tr&gt;&lt;br /&gt;                        &lt;td vAlign=top width=82&gt;&lt;br /&gt;                        &lt;p&gt;&lt;span&gt;16384&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                        &lt;td vAlign=top width=84&gt;&lt;br /&gt;                        &lt;p&gt;&lt;span&gt;10000001&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                        &lt;td vAlign=top width=84&gt;&lt;br /&gt;                        &lt;p&gt;&lt;span&gt;10000000&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                        &lt;td vAlign=top width=78&gt;&lt;br /&gt;                        &lt;p&gt;&lt;span&gt;00000001&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                    &lt;/tr&gt;&lt;br /&gt;                    &lt;tr&gt;&lt;br /&gt;                        &lt;td vAlign=top width=82&gt;&lt;br /&gt;                        &lt;p&gt;&lt;span&gt;16385&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                        &lt;td vAlign=top width=84&gt;&lt;br /&gt;                        &lt;p&gt;&lt;span&gt;10000010&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                        &lt;td vAlign=top width=84&gt;&lt;br /&gt;                        &lt;p&gt;&lt;span&gt;10000000&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                        &lt;td vAlign=top width=78&gt;&lt;br /&gt;                        &lt;p&gt;&lt;span&gt;00000001&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;                        &lt;/td&gt;&lt;br /&gt;                    &lt;/tr&gt;&lt;br /&gt;                &lt;/tbody&gt;&lt;br /&gt;            &lt;/table&gt;&lt;br /&gt;            &lt;/div&gt;&lt;br /&gt;            &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;        &lt;/tr&gt;&lt;br /&gt;        &lt;tr&gt;&lt;br /&gt;            &lt;td vAlign=top width=103&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;Chars&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=144&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;不定，最少&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;字节&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=380&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;采用&lt;/span&gt;&lt;span&gt;UTF-8&lt;/span&gt;&lt;span&gt;编码&lt;/span&gt;&lt;sup&gt;&lt;span&gt;[20]&lt;/span&gt;&lt;/sup&gt;&lt;span&gt;的&lt;/span&gt;&lt;span&gt;Unicode&lt;/span&gt;&lt;span&gt;字符序列&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;        &lt;/tr&gt;&lt;br /&gt;        &lt;tr&gt;&lt;br /&gt;            &lt;td vAlign=top width=103&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;String&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=144&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;不定，最少&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;字节&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=380&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;由&lt;/span&gt;&lt;span&gt;VInt&lt;/span&gt;&lt;span&gt;和&lt;/span&gt;&lt;span&gt;Chars&lt;/span&gt;&lt;span&gt;组成的字符串类型，&lt;/span&gt;&lt;span&gt;VInt&lt;/span&gt;&lt;span&gt;表示&lt;/span&gt;&lt;span&gt;Chars&lt;/span&gt;&lt;span&gt;的长度，&lt;/span&gt;&lt;span&gt;Chars&lt;/span&gt;&lt;span&gt;则表示了&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;的值&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;        &lt;/tr&gt;&lt;br /&gt;    &lt;/tbody&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;&lt;span&gt;&lt;span&gt;1.1.8&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;每个索引所包含的文件&lt;/span&gt;&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;本节介绍的文件存在于每个索引中（&lt;/span&gt;&lt;span&gt;exist one-per-index&lt;/span&gt;&lt;span&gt;），下图描述索引中的文件及组成结构：&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;h4&gt;&lt;span&gt;&lt;span&gt;1.1.8.1&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;Segments&lt;/span&gt;&lt;span&gt;文件&lt;/span&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;索引中活动（&lt;/span&gt;&lt;span&gt;active&lt;/span&gt;&lt;span&gt;）的&lt;/span&gt;&lt;span&gt;Segments&lt;/span&gt;&lt;span&gt;被存储在&lt;/span&gt;&lt;span&gt;segment info&lt;/span&gt;&lt;span&gt;文件中，&lt;/span&gt;&lt;em&gt;&lt;span&gt;segments_N&lt;/span&gt;&lt;/em&gt;&lt;span&gt;，在索引中可能会包含一个或多个&lt;/span&gt;&lt;em&gt;&lt;span&gt;segments_N&lt;/span&gt;&lt;/em&gt;&lt;span&gt;文件。然而，最大一代的那个文件（&lt;/span&gt;&lt;span&gt;the one with largest generation&lt;/span&gt;&lt;span&gt;）是活动的片断文件（这时更旧的&lt;/span&gt;&lt;em&gt;&lt;span&gt;segments_N&lt;/span&gt;&lt;/em&gt;&lt;span&gt;文件依然存在（&lt;/span&gt;&lt;span&gt;are present&lt;/span&gt;&lt;span&gt;）是因为它们暂时（&lt;/span&gt;&lt;span&gt;temporarily&lt;/span&gt;&lt;span&gt;）还不能被删除，或者，一个&lt;/span&gt;&lt;span&gt;writer&lt;/span&gt;&lt;span&gt;正在处理提交请求（&lt;/span&gt;&lt;span&gt;in the process of committing&lt;/span&gt;&lt;span&gt;），或者一个用户定义的（&lt;/span&gt;&lt;span&gt;custom&lt;/span&gt;&lt;span&gt;）&lt;/span&gt;&lt;span&gt;IndexDeletionPolicy&lt;/span&gt;&lt;span&gt;正被使用）。这个文件按照名称列举每一个片断（&lt;/span&gt;&lt;span&gt;lists each segment by name&lt;/span&gt;&lt;span&gt;），详细描述分离的标准（&lt;/span&gt;&lt;span&gt;seperate norm&lt;/span&gt;&lt;span&gt;）和要删除的文件（&lt;/span&gt;&lt;span&gt;deletion files&lt;/span&gt;&lt;span&gt;），并且还包含了每一个片断的大小。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;对&lt;/span&gt;&lt;span&gt;2.1&lt;/span&gt;&lt;span&gt;版本来说，还有一个文件&lt;/span&gt;&lt;em&gt;&lt;span&gt;segments.gen&lt;/span&gt;&lt;/em&gt;&lt;span&gt;。这个文件包含了该索引中当前生成的代（&lt;/span&gt;&lt;span&gt;current generation&lt;/span&gt;&lt;span&gt;）（&lt;/span&gt;&lt;em&gt;&lt;span&gt;segments_N&lt;/span&gt;&lt;/em&gt;&lt;span&gt;中的&lt;/span&gt;&lt;em&gt;&lt;span&gt;_N&lt;/span&gt;&lt;/em&gt;&lt;span&gt;）。这个文件仅用于一个后退处理（&lt;/span&gt;&lt;span&gt;fallback&lt;/span&gt;&lt;span&gt;）以防止（&lt;/span&gt;&lt;span&gt;in case&lt;/span&gt;&lt;span&gt;）当前代（&lt;/span&gt;&lt;span&gt;current generation&lt;/span&gt;&lt;span&gt;）不能被准确地（&lt;/span&gt;&lt;span&gt;accurately&lt;/span&gt;&lt;span&gt;）通过单独地目录文件列举（&lt;/span&gt;&lt;span&gt;by directory listing alone&lt;/span&gt;&lt;span&gt;）来确定（&lt;/span&gt;&lt;span&gt;determened&lt;/span&gt;&lt;span&gt;）（由于某些&lt;/span&gt;&lt;span&gt;NFS&lt;/span&gt;&lt;span&gt;客户端因为基于时间的目录（&lt;/span&gt;&lt;span&gt;time-based directory&lt;/span&gt;&lt;span&gt;）的缓存终止（&lt;/span&gt;&lt;span&gt;cache expiration&lt;/span&gt;&lt;span&gt;）而引起）。这个文件简单地包含了一个&lt;/span&gt;&lt;span&gt;int32&lt;/span&gt;&lt;span&gt;的版本头（&lt;/span&gt;&lt;span&gt;version header&lt;/span&gt;&lt;span&gt;）（&lt;/span&gt;&lt;span&gt;SegmentInfos.FORMAT_LOCKLESS=-2&lt;/span&gt;&lt;span&gt;），遵照代的记录（&lt;/span&gt;&lt;span&gt;followed by the generation recorded&lt;/span&gt;&lt;span&gt;）规则，对&lt;/span&gt;&lt;span&gt;int64&lt;/span&gt;&lt;span&gt;来说会写两次（&lt;/span&gt;&lt;span&gt;write twice&lt;/span&gt;&lt;span&gt;）。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;table cellSpacing=0 cellPadding=0 border=1&gt;&lt;br /&gt;    &lt;tbody&gt;&lt;br /&gt;        &lt;tr&gt;&lt;br /&gt;            &lt;td vAlign=top width=91&gt;&lt;br /&gt;            &lt;p align=center&gt;&lt;strong&gt;&lt;span&gt;版本&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=144&gt;&lt;br /&gt;            &lt;p align=center&gt;&lt;strong&gt;&lt;span&gt;Segments&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span&gt;包含的项&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=84&gt;&lt;br /&gt;            &lt;p align=center&gt;&lt;strong&gt;&lt;span&gt;数目&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=60&gt;&lt;br /&gt;            &lt;p align=center&gt;&lt;strong&gt;&lt;span&gt;类型&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=271&gt;&lt;br /&gt;            &lt;p align=center&gt;&lt;strong&gt;&lt;span&gt;描述&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;        &lt;/tr&gt;&lt;br /&gt;        &lt;tr&gt;&lt;br /&gt;            &lt;td vAlign=top width=91 rowSpan=6&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;2.1&lt;/span&gt;&lt;span&gt;之前版本&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=144&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;Format&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=84&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;1&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=60&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;Int32&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=271&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;在&lt;/span&gt;&lt;span&gt;Lucene1.4&lt;/span&gt;&lt;span&gt;中为&lt;/span&gt;&lt;span&gt;-1&lt;/span&gt;&lt;span&gt;，而在&lt;/span&gt;&lt;span&gt;Lucene 2.1&lt;/span&gt;&lt;span&gt;中为&lt;/span&gt;&lt;span&gt;-3&lt;/span&gt;&lt;span&gt;（&lt;/span&gt;&lt;span&gt;SegmentsInfos.FORMAT_SINGLE_NORM_FILE&lt;/span&gt;&lt;span&gt;）&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;        &lt;/tr&gt;&lt;br /&gt;        &lt;tr&gt;&lt;br /&gt;            &lt;td vAlign=top width=144&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;Version&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=84&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;1&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=60&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;Int64&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=271&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;统计在删除和添加文档时，索引被更改了多少次。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;        &lt;/tr&gt;&lt;br /&gt;        &lt;tr&gt;&lt;br /&gt;            &lt;td vAlign=top width=144&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;NameCounter&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=84&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;1&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=60&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;Int32&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=271&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;用于为新的片断文件生成新的名字。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;        &lt;/tr&gt;&lt;br /&gt;        &lt;tr&gt;&lt;br /&gt;            &lt;td vAlign=top width=144&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;SegCount&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=84&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;1&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=60&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;Int32&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=271&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;片断的数目&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;        &lt;/tr&gt;&lt;br /&gt;        &lt;tr&gt;&lt;br /&gt;            &lt;td vAlign=top width=144&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;SegName&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=84&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;SegCount&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=60&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;String&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=271&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;片断的名字，用于所有构成片断索引的文件的文件名前缀。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;        &lt;/tr&gt;&lt;br /&gt;        &lt;tr&gt;&lt;br /&gt;            &lt;td vAlign=top width=144&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;SegSize&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=84&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;SegCount&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=60&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;Int32&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=271&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;包含在片断索引中的文档的数目。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;        &lt;/tr&gt;&lt;br /&gt;        &lt;tr&gt;&lt;br /&gt;            &lt;td vAlign=top width=91 rowSpan=11&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;2.1&lt;/span&gt;&lt;span&gt;及之后版本&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=144&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;Format&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=84&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;1&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=60&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;Int32&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=271&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;同上&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;        &lt;/tr&gt;&lt;br /&gt;        &lt;tr&gt;&lt;br /&gt;            &lt;td vAlign=top width=144&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;Version&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=84&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;1&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=60&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;Int64&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=271&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;同上&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;        &lt;/tr&gt;&lt;br /&gt;        &lt;tr&gt;&lt;br /&gt;            &lt;td vAlign=top width=144&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;NameCounter&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=84&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;1&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=60&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;Int32&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=271&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;同上&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;        &lt;/tr&gt;&lt;br /&gt;        &lt;tr&gt;&lt;br /&gt;            &lt;td vAlign=top width=144&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;SegCount&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=84&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;1&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=60&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;Int32&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=271&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;同上&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;        &lt;/tr&gt;&lt;br /&gt;        &lt;tr&gt;&lt;br /&gt;            &lt;td vAlign=top width=144&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;SegName&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=84&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;SegCount&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=60&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;String&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=271&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;同上&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;        &lt;/tr&gt;&lt;br /&gt;        &lt;tr&gt;&lt;br /&gt;            &lt;td vAlign=top width=144&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;SegSize&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=84&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;SegCount&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=60&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;Int32&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=271&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;同上&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;        &lt;/tr&gt;&lt;br /&gt;        &lt;tr&gt;&lt;br /&gt;            &lt;td vAlign=top width=144&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;DelGen&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=84&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;SegCount&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=60&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;Int64&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=271&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;为分离的删除文件的代的数目（&lt;/span&gt;&lt;span&gt;generation count of the separate deletes file&lt;/span&gt;&lt;span&gt;），如果值为&lt;/span&gt;&lt;span&gt;-1&lt;/span&gt;&lt;span&gt;，表示没有分离的删除文件。如果值为&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;，表示这是一个&lt;/span&gt;&lt;span&gt;2.1&lt;/span&gt;&lt;span&gt;版本之前的片断，这时你必须检查文件是否存在&lt;/span&gt;&lt;em&gt;&lt;span&gt;_X.del&lt;/span&gt;&lt;/em&gt;&lt;span&gt;这样的文件。任意大于&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;的值，表示有分离的删除文件，文件名为&lt;/span&gt;&lt;em&gt;&lt;span&gt;_X_N.del&lt;/span&gt;&lt;/em&gt;&lt;span&gt;。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;        &lt;/tr&gt;&lt;br /&gt;        &lt;tr&gt;&lt;br /&gt;            &lt;td vAlign=top width=144&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;HasSingleNormFile&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=84&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;SegCount&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=60&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;Int8&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=271&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;该值如果为&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;，表示&lt;/span&gt;&lt;span&gt;Norm&lt;/span&gt;&lt;span&gt;域（&lt;/span&gt;&lt;span&gt;field&lt;/span&gt;&lt;span&gt;）被写为一个单一连接的文件（&lt;/span&gt;&lt;span&gt;single joined file&lt;/span&gt;&lt;span&gt;）中（扩展名为&lt;/span&gt;&lt;em&gt;&lt;span&gt;.nrm&lt;/span&gt;&lt;/em&gt;&lt;span&gt;），如果值为&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;，表示每一个&lt;/span&gt;&lt;span&gt;field&lt;/span&gt;&lt;span&gt;的&lt;/span&gt;&lt;span&gt;norms&lt;/span&gt;&lt;span&gt;被存储为分离的&lt;/span&gt;&lt;em&gt;&lt;span&gt;.fN&lt;/span&gt;&lt;/em&gt;&lt;span&gt;文件中，参考下面的“标准化因素（&lt;/span&gt;&lt;span&gt;Normalization Factors&lt;/span&gt;&lt;span&gt;）”&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;        &lt;/tr&gt;&lt;br /&gt;        &lt;tr&gt;&lt;br /&gt;            &lt;td vAlign=top width=144&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;NumField&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=84&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;SegCount&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=60&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;Int32&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=271&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;表示&lt;/span&gt;&lt;span&gt;NormGen&lt;/span&gt;&lt;span&gt;数组的大小，如果为&lt;/span&gt;&lt;span&gt;-1&lt;/span&gt;&lt;span&gt;表示没有&lt;/span&gt;&lt;span&gt;NormGen&lt;/span&gt;&lt;span&gt;被存储。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;        &lt;/tr&gt;&lt;br /&gt;        &lt;tr&gt;&lt;br /&gt;            &lt;td vAlign=top width=144&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;NormGen&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=84&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;SegCount * NumField&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=60&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;Int64&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=271&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;记录分离的标准文件（&lt;/span&gt;&lt;span&gt;separate norm file&lt;/span&gt;&lt;span&gt;）的代（&lt;/span&gt;&lt;span&gt;generation&lt;/span&gt;&lt;span&gt;），如果值为&lt;/span&gt;&lt;span&gt;-1&lt;/span&gt;&lt;span&gt;，表示没有&lt;/span&gt;&lt;span&gt;normGens&lt;/span&gt;&lt;span&gt;被存储，并且当片断文件是&lt;/span&gt;&lt;span&gt;2.1&lt;/span&gt;&lt;span&gt;之前版本生成的时，它们全部被假设为&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;（&lt;/span&gt;&lt;span&gt;assumed to be 0&lt;/span&gt;&lt;span&gt;）。而当片断文件是&lt;/span&gt;&lt;span&gt;2.1&lt;/span&gt;&lt;span&gt;及更高版本生成的时，它们全部被假设为&lt;/span&gt;&lt;span&gt;-1&lt;/span&gt;&lt;span&gt;。这时这个代（&lt;/span&gt;&lt;span&gt;generation&lt;/span&gt;&lt;span&gt;）的意义与上面&lt;/span&gt;&lt;span&gt;DelGen&lt;/span&gt;&lt;span&gt;的意义一样。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;        &lt;/tr&gt;&lt;br /&gt;        &lt;tr&gt;&lt;br /&gt;            &lt;td vAlign=top width=144&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;IsCompoundFile&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=84&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;SegCount&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=60&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;Int8&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;            &lt;td vAlign=top width=271&gt;&lt;br /&gt;            &lt;p&gt;&lt;span&gt;记录是否该片断文件被写为一个复合的文件，如果值为&lt;/span&gt;&lt;span&gt;-1&lt;/span&gt;&lt;span&gt;表示它不是一个复合文件（&lt;/span&gt;&lt;span&gt;compound file&lt;/span&gt;&lt;span&gt;），如果为&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;则为一个复合文件。另外如果值为&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;，表示我们需要检查文件系统是否存在&lt;/span&gt;&lt;em&gt;&lt;span&gt;_X.cfs&lt;/span&gt;&lt;/em&gt;&lt;span&gt;。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;            &lt;/td&gt;&lt;br /&gt;        &lt;/tr&gt;&lt;br /&gt;    &lt;/tbody&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;h4&gt;&lt;span&gt;&lt;span&gt;1.1.8.2&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;Lock&lt;/span&gt;&lt;span&gt;文件&lt;/span&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;写锁（&lt;/span&gt;&lt;span&gt;write lock&lt;/span&gt;&lt;span&gt;）文件名为“&lt;/span&gt;&lt;em&gt;&lt;span&gt;write.lock&lt;/span&gt;&lt;/em&gt;&lt;span&gt;”，它缺省存储在索引目录中。如果锁目录（&lt;/span&gt;&lt;span&gt;lock directory&lt;/span&gt;&lt;span&gt;）与索引目录不一致，写锁将被命名为“&lt;/span&gt;&lt;em&gt;&lt;span&gt;XXXX-write.lock&lt;/span&gt;&lt;/em&gt;&lt;span&gt;”，其中“&lt;/span&gt;&lt;em&gt;&lt;span&gt;XXXX&lt;/span&gt;&lt;/em&gt;&lt;span&gt;”是一个唯一的前缀（&lt;/span&gt;&lt;span&gt;unique prefix&lt;/span&gt;&lt;span&gt;），来源于（&lt;/span&gt;&lt;span&gt;derived from&lt;/span&gt;&lt;span&gt;）索引目录的全路径（&lt;/span&gt;&lt;span&gt;full path&lt;/span&gt;&lt;span&gt;）。当这个写锁出现时，一个&lt;/span&gt;&lt;span&gt;writer&lt;/span&gt;&lt;span&gt;当前正在修改索引（添加或者清除文档）。这个写锁确保在一个时刻只有一个&lt;/span&gt;&lt;span&gt;writer&lt;/span&gt;&lt;span&gt;修改索引。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;需要注意的是在&lt;/span&gt;&lt;span&gt;2.1&lt;/span&gt;&lt;span&gt;版本之前（&lt;/span&gt;&lt;span&gt;prior to&lt;/span&gt;&lt;span&gt;），&lt;/span&gt;&lt;span&gt;Lucene&lt;/span&gt;&lt;span&gt;还使用一个&lt;/span&gt;&lt;span&gt;commit lock&lt;/span&gt;&lt;span&gt;，这个锁在&lt;/span&gt;&lt;span&gt;2.1&lt;/span&gt;&lt;span&gt;版本里被删除了。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;h4&gt;&lt;span&gt;&lt;span&gt;1.1.8.3&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;Deletable&lt;/span&gt;&lt;span&gt;文件&lt;/span&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;span&gt;在&lt;/span&gt;&lt;span&gt;Lucene 2.1&lt;/span&gt;&lt;span&gt;版本之前，有一个“&lt;/span&gt;&lt;em&gt;&lt;span&gt;deletable&lt;/span&gt;&lt;/em&gt;&lt;span&gt;”文件，包含了那些需要被删除文档的详细资料。在&lt;/span&gt;&lt;span&gt;2.1&lt;/span&gt;&lt;span&gt;版本后，一个&lt;/span&gt;&lt;span&gt;writer&lt;/span&gt;&lt;span&gt;会动态地（&lt;/span&gt;&lt;span&gt;dynamically&lt;/span&gt;&lt;span&gt;）计算哪些文件需要删除，因此，没有文件被写入文件系统。&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344303-3829749074303157844?l=javenstudio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javenstudio.blogspot.com/feeds/3829749074303157844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344303&amp;postID=3829749074303157844' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344303/posts/default/3829749074303157844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344303/posts/default/3829749074303157844'/><link rel='alternate' type='text/html' href='http://javenstudio.blogspot.com/2007/08/annotated-lucene.html' title='Annotated Lucene：第五节 索引里有什么'/><author><name>Javen-Studio</name><uri>http://www.blogger.com/profile/09021504944813976215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.cppblog.com/images/cppblog_com/javenstudio/94/o_longhorn.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344303.post-7834715645845136725</id><published>2007-05-13T22:16:00.000-07:00</published><updated>2007-05-13T22:17:55.912-07:00</updated><title type='text'>Annotated Lucene：第四节 什么是索引</title><content type='html'>&lt;h1 style="MARGIN: 17pt 0pt 16.5pt 21.6pt"&gt;&lt;a name=_Toc166786094&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 240%; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;1&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 240%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;font color=#000000&gt;什么是索引&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="mso-bookmark: _Toc166786094"&gt;&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 240%"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h1&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;为了使用&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Lucene&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;来索引数据，首先你得把它转换成一个纯文本（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;plain-text&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;tokens&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的数据流（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;stream&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），并通过它创建出&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Document&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对象，其包含的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Fields&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;成员容纳这些文本数据。一旦你准备好些&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Document&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对象，你就可以调用&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;IndexWriter&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;addDocument(Document)&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;方法来传递这些对象到&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Lucene&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;并写入索引中。当你做这些的时候，&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Lucene&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;首先分析（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;analyzer&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）这些数据来使得它们更适合索引。详见《&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Lucene In Action&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;》&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;下面先了解一下索引结构的一些术语。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 13pt 0pt 13pt 28.8pt"&gt;&lt;a name=_Toc166786095&gt;&lt;font color=#000000&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"&gt;&lt;span style="mso-list: Ignore"&gt;1.1&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 黑体; mso-ascii-font-family: Arial"&gt;索引数据结构介绍&lt;/span&gt;&lt;/font&gt;&lt;/a&gt;&lt;span style="mso-bookmark: _Toc166786095"&gt;&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h2&gt;&lt;br /&gt;&lt;h3 style="MARGIN: 13pt 0pt 13pt 36pt"&gt;&lt;a name=_Toc166786096&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"&gt;&lt;span style="mso-list: Ignore"&gt;1.1.1&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体"&gt;术语定义&lt;/span&gt;&lt;/a&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Lucene&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;中基本的概念（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;fundamental concepts&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）是&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;index&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;、&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Document&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;、&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Field&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;和&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;term&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 42pt; TEXT-INDENT: -21pt; mso-list: l2 level1 lfo2; tab-stops: list 42.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;span style="mso-list: Ignore"&gt;ú&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;一条索引（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;index&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）包含（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;contains&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）了一连串（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;a sequence of&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）文档（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;documents&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 42pt; TEXT-INDENT: -21pt; mso-list: l2 level1 lfo2; tab-stops: list 42.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;span style="mso-list: Ignore"&gt;ú&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;一个文档（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;document&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）是由一连串&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;fields&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;组成。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 42pt; TEXT-INDENT: -21pt; mso-list: l2 level1 lfo2; tab-stops: list 42.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;span style="mso-list: Ignore"&gt;ú&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;field&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;是由一连串命名了（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;a named sequence of&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;terms&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;组成。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 42pt; TEXT-INDENT: -21pt; mso-list: l2 level1 lfo2; tab-stops: list 42.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;span style="mso-list: Ignore"&gt;ú&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;term&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;是一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;string&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;（字符串）。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;相同的字符串（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;same string&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）但是在两个不同的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;fields&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;中被认为（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;considered&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）是不同的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;term&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。因此（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;thus&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;term&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;被描述为（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;represent as&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）一对字符串（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;a pair of strings&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），第一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;string&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;取名（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;naming&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）为该&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;field&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的名字，第二个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;string&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;取名为包含在该&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;field&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;中的文本（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;text within the field&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;h3 style="MARGIN: 13pt 0pt 13pt 36pt"&gt;&lt;a name=_Toc166786097&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"&gt;&lt;span style="mso-list: Ignore"&gt;1.1.2&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体"&gt;倒排索引（&lt;span lang=EN-US&gt;inverted indexing&lt;/span&gt;）&lt;/span&gt;&lt;/a&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;索引（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;index&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）存储&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;terms&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的统计数据（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;statistics about terms&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），为了使得基于&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;term&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的检索（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;term-based search&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）效率更高（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;more efficient&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Lucene&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的索引分成（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;fall into&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）被广为熟悉的（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;known as&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）索引种类（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;family of indexex&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）叫做倒排索引（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;inverted index&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。这是因为它可以列举（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;list&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），对一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;term&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;来说，所有包含它的文档（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;documents that contain it&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。这与自然关联规则（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;natural relationship&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）是相反，即由&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;documents&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;列举它所包含的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;terms&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;h3 style="MARGIN: 13pt 0pt 13pt 36pt"&gt;&lt;a name=_Toc166786098&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"&gt;&lt;span style="mso-list: Ignore"&gt;1.1.3&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体"&gt;Fields&lt;/span&gt;&lt;/a&gt;&lt;span style="mso-bookmark: _Toc166786098"&gt;&lt;span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体"&gt;的种类&lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;在&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Lucene&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;中，&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;fields&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;可以被存储（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;stored&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），在这种情况（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;in which case&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）下它们的文本被逐字地（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;literally&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）以一种非倒排的方式（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;in non-inverted manner&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）存储进&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;index&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;中。那些被倒排的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;fields&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;that are inverted&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）称为（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;called&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）被索引（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;indexed&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;field&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;可以都被存储（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;stored&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）并且被索引（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;indexed&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;field&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的文本可以被分解为（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;be tokenized into&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;terms&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;以便被索引（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;indexed&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），或者&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;field&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的文本可以被逐字地使用为（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;used literally as&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;term&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;来被索引（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;be indexed&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。大多数&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;fields&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;被分解（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;be tokenized&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），但是有时候对某种唯一性（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;certain identifier&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;field&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;来逐字地索引（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;be indexed literally&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）又是非常有用的，如&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;url&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;h3 style="MARGIN: 13pt 0pt 13pt 36pt"&gt;&lt;a name=_Toc166786099&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"&gt;&lt;span style="mso-list: Ignore"&gt;1.1.4&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体"&gt;片断（&lt;span lang=EN-US&gt;segments&lt;/span&gt;）&lt;/span&gt;&lt;/a&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Lucene&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的索引可以由多个复合的子索引（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;multiple sub-indexes&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）或者片断（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;segments&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）组成（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;be composed of&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。每一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;segment&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;都是一个完全独立的索引（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;fully independent index&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），它能够被分离地进行检索（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;be searched seperately&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。索引按如下方式进行演化（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;evolve&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）：&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 41pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo3; tab-stops: list 41.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;span style="mso-list: Ignore"&gt;1.&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;为新添加的文档（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;newly added documents&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）创建新的片断（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;segments&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 41pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo3; tab-stops: list 41.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;span style="mso-list: Ignore"&gt;2.&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;合并已存在的片断（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;merging existing segments&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;检索可以涉及（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;involve&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）多个复合（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;multiple&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;segments&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，并且&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;/&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;或者多个复合（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;multiple&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;indexes&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。每一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;index&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;潜在地（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;potentially&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）包含（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;composed of&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）一套（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;a set of&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;segments&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;h3 style="MARGIN: 13pt 0pt 13pt 36pt"&gt;&lt;a name=_Toc166786100&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"&gt;&lt;span style="mso-list: Ignore"&gt;1.1.5&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体"&gt;文档编号（&lt;span lang=EN-US&gt;document numbers&lt;/span&gt;）&lt;/span&gt;&lt;/a&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;在内部（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;internally&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Lucene&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;通过一个整数的（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;interger&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）文档编号（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;document number&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）来表示文档。第一篇被添加到索引中的文档编号为&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;0&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;be numbered zero&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），每一篇随后（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;subsequent&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）被添加的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;document&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;获得一个比前一篇更大的数字（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;a number one greater than the previous&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;需要注意的是一篇文档的编号（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;document’s number&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）可以更改，所以在&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Lucene&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;之外（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;outside of&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）存储这些编号时需要特别小心（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;caution should be taken&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。详细地说（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;in particular&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），编号在如下的情况（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;following situations&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）可以更改：&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 42pt; TEXT-INDENT: -21pt; mso-list: l1 level1 lfo4; tab-stops: list 42.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;span style="mso-list: Ignore"&gt;ú&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;存储在每个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;segment&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;中的编号仅仅是在所在的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;segment&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;中是唯一的（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;unique&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），在它能够被使用在（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;be used in&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）一个更大的上下文（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;a larger context&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）中前必须被转变（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;converted&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。标准的技术（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;standard technique&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）是给每一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;segment&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;分配（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;allocate&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）一个范围的值（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;a range of values&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），基于该&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;segment&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;所使用的编号的范围（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;the range of numbers&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。为了将一篇文档的编号从一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;segment&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;转变为一个扩展的值（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;an external value&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），该片断的基础的文档编号（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;base document number&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）被添加（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;is added&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。为了将一个扩展的值（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;external value&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）转变回一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;segment&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的特定的值（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;specific value&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），该&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;segment&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;将该扩展的值所在的范围标识出来（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;be indentified&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），并且该&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;segment&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的基础值（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;base value&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）将被减少（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;substracted&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。例如，两个包含&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;5&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;篇文档的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;segments&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;可能会被合并（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;combined&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），所以第一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;segment&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;有一个基础的值（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;base value&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）为&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;0&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，第二个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;segment&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;则为&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;5&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。在第二个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;segment&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;中的第&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;3&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;篇文档（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;document three from the second segment&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）将有一个扩展的值为&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;8&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 42pt; TEXT-INDENT: -21pt; mso-list: l1 level1 lfo4; tab-stops: list 42.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;span style="mso-list: Ignore"&gt;ú&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;当文档被删除的时候，在编号序列中（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;in the numbering&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）将产生（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;created&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）间隔段（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;gaps&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。这些最后（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;eventually&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）在索引通过合并演进时（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;index evolves through merging&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）将会被清除（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;removed&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。当&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;segments&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;被合并后（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;merged&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），已删除的文档将会被丢弃（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;dropped&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），一个刚被合并的（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;freshly-merged&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;segment&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;因此在它的编号序列中（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;in its numbering&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）不再有间隔段（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;gaps&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;h3 style="MARGIN: 13pt 0pt 13pt 36pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"&gt;&lt;span style="mso-list: Ignore"&gt;1.1.6&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体"&gt;索引结构概述&lt;span lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;每一个片断的索引（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;segment index&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）管理（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;maintains&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）如下的数据：&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 42pt; TEXT-INDENT: -21pt; mso-list: l3 level1 lfo5; tab-stops: list 42.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;span style="mso-list: Ignore"&gt;ú&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Fields&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;名称：&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;这包含了（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;contains&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）在索引中使用的一系列&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;fields&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的名称（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;the set of field names&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 42pt; TEXT-INDENT: -21pt; mso-list: l3 level1 lfo5; tab-stops: list 42.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;span style="mso-list: Ignore"&gt;ú&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;已存储的&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;field&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的值：&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;它包含了，对每篇文档来说，一个属性&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;-&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;值数据对（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;attribute-value pairs&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的清单（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;a list of&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），其中属性即为&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;field&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的名字。这些被用来存储关于文档的备用信息（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;auxiliary information&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），比如它的标题（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;title&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）、&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;url&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;、或者一个访问一个数据库（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;database&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的唯一标识（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;identifier&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。这套存储的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;fields&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;就是那些在检索时对每一个命中的（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;hits&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）文档所返回的（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;returned&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）信息。这些是通过文档编号（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;document number&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）来做为&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;key&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;得到的。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 42pt; TEXT-INDENT: -21pt; mso-list: l3 level1 lfo5; tab-stops: list 42.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;span style="mso-list: Ignore"&gt;ú&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Term&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;字典（&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;dictionary&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）：&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;一个包含（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;contains&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）所有&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;terms&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的字典，被使用在所有文档中所有被索引的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;fields&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;中。它还包含了该&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;term&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;所在的文档的数目（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;the number of documents which contains the term&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），并且指向了（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;pointer to&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;term&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的频率（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;frequency&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）和接近度（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;proximity&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的数据（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;data&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 42pt; TEXT-INDENT: -21pt; mso-list: l3 level1 lfo5; tab-stops: list 42.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;span style="mso-list: Ignore"&gt;ú&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Term&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;频率数据（&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;frequency data&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）：&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对字典中的每一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;term&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;来说，所有包含该&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;term&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;contains the term&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的文档的编号（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;numbers of all documents&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），以及该&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;term&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;出现在该文档中的频率（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;frequency&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 42pt; TEXT-INDENT: -21pt; mso-list: l3 level1 lfo5; tab-stops: list 42.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;span style="mso-list: Ignore"&gt;ú&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Term&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;接近度数据（&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;proximity data&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）：&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对字典中的每一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;term&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;来说，该&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;term&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;出现在（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;occur&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）每一篇文档中的位置（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;positions&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 42pt; TEXT-INDENT: -21pt; mso-list: l3 level1 lfo5; tab-stops: list 42.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;span style="mso-list: Ignore"&gt;ú&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;调整因子（&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;normalization factors&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）：&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对每一篇文档的每一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;field&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;来说，为一个存储的值（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;a value is stored&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）用来加入到（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;multiply into&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）命中该&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;field&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的分数（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;score for hits on that field&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）中。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 42pt; TEXT-INDENT: -21pt; mso-list: l3 level1 lfo5; tab-stops: list 42.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;span style="mso-list: Ignore"&gt;ú&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Term&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;向量（&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;vectors&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）：&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对每一篇文档的每一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;field&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;来说，&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;term&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;向量（有时候被称做文档向量）可以被存储。一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;term&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;向量由&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;term&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;文本和&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;term&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的频率（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;frequency&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）组成（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;consists of&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。怎么添加&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;term&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;向量到你的索引中请参考&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Field&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类的构造方法（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;constructors&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 42pt; TEXT-INDENT: -21pt; mso-list: l3 level1 lfo5; tab-stops: list 42.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;span style="mso-list: Ignore"&gt;ú&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;删除的文档（&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;deleted documents&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）：&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;一个可选的（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;optional&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）文件标示（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;indicating&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）哪一篇文档被删除。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;关于这些项的详细信息在随后的章节（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;subsequent sections&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）中逐一介绍。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344303-7834715645845136725?l=javenstudio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javenstudio.blogspot.com/feeds/7834715645845136725/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344303&amp;postID=7834715645845136725' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344303/posts/default/7834715645845136725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344303/posts/default/7834715645845136725'/><link rel='alternate' type='text/html' href='http://javenstudio.blogspot.com/2007/05/annotated-lucene_13.html' title='Annotated Lucene：第四节 什么是索引'/><author><name>Javen-Studio</name><uri>http://www.blogger.com/profile/09021504944813976215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.cppblog.com/images/cppblog_com/javenstudio/94/o_longhorn.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344303.post-9043341473587213436</id><published>2007-05-09T08:49:00.000-07:00</published><updated>2007-05-09T19:17:19.632-07:00</updated><title type='text'>Annotated Lucene：第三节 索引是如何创建的</title><content type='html'>&lt;h1 style="MARGIN: 17pt 0pt 16.5pt 21.6pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 240%; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&lt;strong style="FONT-SIZE: 12pt"&gt;4&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;font color=#000000&gt;&lt;span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 240%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;索引是如何创建的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 240%"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/h1&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;为了使用&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Lucene&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;来索引数据，首先你比把它转换成一个纯文本（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;plain-text&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;tokens&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的数据流（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;stream&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），并通过它创建出&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Document&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对象，其包含的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Fields&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;成员容纳这些文本数据。一旦你准备好些&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Document&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对象，你就可以调用&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;IndexWriter&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;addDocument(Document)&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;方法来传递这些对象到&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Lucene&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;并写入索引中。当你做这些的时候，&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Lucene&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;首先分析（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;analyzer&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）这些数据来使得它们更适合索引。详见《&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Lucene In Action&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;》&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;Store&amp;nbsp;the&amp;nbsp;index&amp;nbsp;on&amp;nbsp;disk&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Directory&amp;nbsp;directory&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;FSDirectory.getDirectory(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;/tmp/testindex&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;Use&amp;nbsp;standard&amp;nbsp;analyzer&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Analyzer&amp;nbsp;analyzer&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;StandardAnalyzer();&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;Create&amp;nbsp;IndexWriter&amp;nbsp;object&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IndexWriter&amp;nbsp;iwriter&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;IndexWriter(directory,&amp;nbsp;analyzer,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;true&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iwriter.setMaxFieldLength(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;25000&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;make&amp;nbsp;a&amp;nbsp;new,&amp;nbsp;empty&amp;nbsp;document&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Document&amp;nbsp;doc&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;Document();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;File&amp;nbsp;f&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;File(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;/tmp/test.txt&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;Add&amp;nbsp;the&amp;nbsp;path&amp;nbsp;of&amp;nbsp;the&amp;nbsp;file&amp;nbsp;as&amp;nbsp;a&amp;nbsp;field&amp;nbsp;named&amp;nbsp;"path".&amp;nbsp;&amp;nbsp;Use&amp;nbsp;a&amp;nbsp;field&amp;nbsp;that&amp;nbsp;is&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;indexed&amp;nbsp;(i.e.&amp;nbsp;searchable),&amp;nbsp;but&amp;nbsp;don't&amp;nbsp;tokenize&amp;nbsp;the&amp;nbsp;field&amp;nbsp;into&amp;nbsp;words.&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;doc.add(&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;Field(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;path&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;f.getPath(),&amp;nbsp;Field.Store.YES,&amp;nbsp;Field.Index.UN_TOKENIZED));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;text&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;This&amp;nbsp;is&amp;nbsp;the&amp;nbsp;text&amp;nbsp;to&amp;nbsp;be&amp;nbsp;indexed.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;doc.add(&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;Field(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;fieldname&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;text,&amp;nbsp;Field.Store.YES,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Field.Index.TOKENIZED));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;Add&amp;nbsp;the&amp;nbsp;last&amp;nbsp;modified&amp;nbsp;date&amp;nbsp;of&amp;nbsp;the&amp;nbsp;file&amp;nbsp;a&amp;nbsp;field&amp;nbsp;named&amp;nbsp;"modified".&amp;nbsp;&amp;nbsp;Use&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;a&amp;nbsp;field&amp;nbsp;that&amp;nbsp;is&amp;nbsp;indexed&amp;nbsp;(i.e.&amp;nbsp;searchable),&amp;nbsp;but&amp;nbsp;don't&amp;nbsp;tokenize&amp;nbsp;the&amp;nbsp;field&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;into&amp;nbsp;words.&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;doc.add(&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;Field(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;modified&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DateTools.timeToString(f.lastModified(),&amp;nbsp;DateTools.Resolution.MINUTE),&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Field.Store.YES,&amp;nbsp;Field.Index.UN_TOKENIZED));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;Add&amp;nbsp;the&amp;nbsp;contents&amp;nbsp;of&amp;nbsp;the&amp;nbsp;file&amp;nbsp;to&amp;nbsp;a&amp;nbsp;field&amp;nbsp;named&amp;nbsp;"contents".&amp;nbsp;&amp;nbsp;Specify&amp;nbsp;a&amp;nbsp;Reader,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;so&amp;nbsp;that&amp;nbsp;the&amp;nbsp;text&amp;nbsp;of&amp;nbsp;the&amp;nbsp;file&amp;nbsp;is&amp;nbsp;tokenized&amp;nbsp;and&amp;nbsp;indexed,&amp;nbsp;but&amp;nbsp;not&amp;nbsp;stored.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;Note&amp;nbsp;that&amp;nbsp;FileReader&amp;nbsp;expects&amp;nbsp;the&amp;nbsp;file&amp;nbsp;to&amp;nbsp;be&amp;nbsp;in&amp;nbsp;the&amp;nbsp;system's&amp;nbsp;default&amp;nbsp;encoding.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;If&amp;nbsp;that's&amp;nbsp;not&amp;nbsp;the&amp;nbsp;case&amp;nbsp;searching&amp;nbsp;for&amp;nbsp;special&amp;nbsp;characters&amp;nbsp;will&amp;nbsp;fail.&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;doc.add(&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;Field(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;contents&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;FileReader(f)));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iwriter.addDocument(doc);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iwriter.optimize();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iwriter.close();&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;下面详细介绍每一个类的处理机制。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 13pt 0pt 13pt 28.8pt"&gt;&lt;font color=#000000&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"&gt;&lt;span style="mso-list: Ignore"&gt;4.1&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 黑体; mso-ascii-font-family: Arial"&gt;索引创建类&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体"&gt;IndexWriter&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;IndexWriter&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对象创建并且维护&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;(maintains) &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;一条索引&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;它的构造函数&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;(constructor)&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;create&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;参数&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;(argument)&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;确定&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;(determines)&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;是否一条新的索引将被创建，或者是否一条已经存在的索引将被打开。需要注意的是你可以使用&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;create=true&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;参数打开一条索引，即使有其他&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;readers&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;也在在使用这条索引。旧的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;readers&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;将继续检索它们已经打开的”&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;point in time&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;”快照（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;snapshot&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），并不能看见那些新已创建的索引，直到它们再次打开（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;re-open&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。另外还有一个没有&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;create&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;参数的构造函数，如果提供的目录（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;provided path&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）中没有已经存在的索引，它将创建它，否则将打开此存在的索引。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;另一方面（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;in either case&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），添加文档使用&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;addDocument()&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;方法，删除文档使用&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;removeDocument()&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;方法，而且一篇文档可以使用&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;updateDocument()&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;方法来更新（仅仅是先执行&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;delete&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;在执行&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;add&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;操作而已）。当完成了添加、删除、更新文档，应该需要调用&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;close&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;方法。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;这些修改会缓存在内存中（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;buffered in memory&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），并且定期地（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;periodically&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）刷新到（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;flush&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Directory&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;中（在上述方法的调用期间）。一次&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;flush&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;操作会在如下时候触发（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;triggered&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）：当从上一次&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;flush&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;操作后有足够多缓存的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;delete&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;操作（参见&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;setMaxBufferedDeleteTerms(int)&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），或者足够多已添加的文档（参见&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;setMaxBufferedDocs(int)&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），无论哪个更快些（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;whichever is sooner&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。当一次&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;flush&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;发生时，等待的（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;pending&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;delete&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;和&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;add&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;文档都会被&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;flush&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;到索引中。一次&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;flush&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;可能触发一个或更多的片断合并（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;segment merges&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;构造函数中的可选参数（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;optional argument&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;autoCommit&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;控制（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;controls&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）修改对&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;IndexReader&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;实体（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;instance&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）读取相同索引的能见度（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;visibility&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。当设置为&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;false&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;时，修改操作将不可见（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;visible&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）直到&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;close()&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;方法被调用后。需要注意的是修改将依然被&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;flush&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;进&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Directory&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，就像新文件一样（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;as new files&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），但是却不会被提交（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;commit&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）（没有新的引用那些新文件的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;segments_N&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;文件会被写入（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;written referencing the new files&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;））直道&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;close()&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;方法被调用。如果在调用&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;close()&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;之前发生了某种严重错误（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;something goes terribly wrong&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）（例如&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;JVM&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;崩溃了），于是索引将反映（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;reflect&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）没有任何修改发生过（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;none of changes made&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）（它将保留它开始的状态（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;remain in its starting state&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;））。你还可以调用&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;close()&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，这样可以关闭那些没有提交任何修改操作的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;writers&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，并且清除所有那些已经&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;flush&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;但是现在不被引用的（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;unreferenced&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）索引文件。这个模式（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;mode&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）对防止（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;prevent&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;readers&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;在一个错误的时间重新刷新（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;refresh&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）非常有用（例如在你完成所有&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;delete&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;操作后，但是在你完成添加操作前的时候）。它还能被用来实现简单的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;single-writer&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的事务语义（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;transactional semantics&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;"all or none"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;当&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;autoCommit&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;设为&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;true&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的时候，每次&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;flush&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;也会是一次提交（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;IndexReader&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;实体将会把每次&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;flush&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;当作一次提交）。这是缺省的设置，目的是为了匹配（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;match&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;2.2&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;版本之前的行为（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;behavior&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。当以这种模式运行时，当优化（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;optimize&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）或者片断合并（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;segment merges&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）正在进行（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;take place&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的时候需要小心地重新刷新（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;refresh&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）你的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;readers&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，因为这两个操作会绑定（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;tie up&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）可观的（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;substantial&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）磁盘空间。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;当一条索引暂时（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;for a while&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）将不会有更多的文档被添加，并且期望（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;desired&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）得到最理想（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;optimal&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的检索性能（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;performance&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），于是&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;optimize()&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;方法应该在索引被关闭之前被调用。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;打开&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;IndexWriter&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;会为使用的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Directory&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;创建一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;lock&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;文件。尝试对相同的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Directory&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;打开另一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;IndexWriter&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;将会导致（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;lead to&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;LockObtainFailedException&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;异常。如果一个建立在相同的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Directory&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;IndexReader&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对象被用来从这条索引中删除文档的时候，这个异常也会被抛出。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;专家（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Expert&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）：&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;IndexWriter&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;允许指定（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;specify&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）一个可选的（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;optional&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;IndexDeletionPolicy&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;实现。你可以通过这个控制什么时候优先的提交（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;prior commit&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）从索引中被删除。缺省的策略（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;policy&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）是&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;KeepOnlyLastCommitDeletionPolicy&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类，在一个新的提交完成的时候它会马上所有的优先提交（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;prior commit&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）（这匹配&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;2.2&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;版本之前的行为）。创建你自己的策略能够允许你明确地（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;explicitly&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）保留以前的”&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;point in time&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;”提交（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;commit&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）在索引中存在（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;alive&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）一段时间。为了让&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;readers&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;刷新到新的提交，在它们之下没有被删除的旧的提交（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;without having the old commit deleted out from under them&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。这对那些不支持“在最后关闭时才删除”语义（”&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;delete on last close&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;”&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt; semantics&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的文件系统（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;filesystem&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）如&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;NFS&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，而这是&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Lucene&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的“&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;point in time&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;”检索通常所依赖的（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;normally rely on&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 7.5pt"&gt;Annotated Lucene &lt;/span&gt;&lt;span style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;作者：&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 7.5pt"&gt;naven &lt;/span&gt;&lt;span style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;日期：&lt;/span&gt;&lt;st1:chsdate Year="2007" Month="5" Day="1" IsLunarDate="False" IsROCDate="False" w:st="on"&gt;&lt;span lang=EN-US style="FONT-SIZE: 7.5pt"&gt;2007-5-1&lt;/span&gt;&lt;/st1:chsdate&gt;&lt;span lang=EN-US style="FONT-SIZE: 7.5pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344303-9043341473587213436?l=javenstudio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javenstudio.blogspot.com/feeds/9043341473587213436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344303&amp;postID=9043341473587213436' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344303/posts/default/9043341473587213436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344303/posts/default/9043341473587213436'/><link rel='alternate' type='text/html' href='http://javenstudio.blogspot.com/2007/05/annotated-lucene_09.html' title='Annotated Lucene：第三节 索引是如何创建的'/><author><name>Javen-Studio</name><uri>http://www.blogger.com/profile/09021504944813976215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.cppblog.com/images/cppblog_com/javenstudio/94/o_longhorn.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344303.post-4885834803148016463</id><published>2007-05-07T04:44:00.001-07:00</published><updated>2007-05-09T20:31:56.483-07:00</updated><title type='text'>Annotated Lucene：第二节 认识一下与索引有关的类</title><content type='html'>&lt;blockquote dir=ltr style="MARGIN-RIGHT: 0px"&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 13pt 0pt; TEXT-INDENT: 0pt; TEXT-ALIGN: center; mso-list: none; tab-stops: 21.0pt" align=center&gt;&lt;font color=#000000&gt;&lt;span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 173%"&gt;&lt;font face=Arial&gt;Annotated Lucene(&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; LINE-HEIGHT: 173%; FONT-FAMILY: 黑体; mso-ascii-font-family: Arial"&gt;中文版&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 173%"&gt;&lt;font face=Arial&gt;) &lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/h2&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 7.5pt"&gt;Annotated Lucene &lt;/span&gt;&lt;span style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;作者：&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 7.5pt"&gt;naven&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;h1 style="MARGIN: 17pt 0pt 16.5pt 21.6pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 240%; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;3&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;font color=#000000&gt;&lt;span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 240%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;索引类关系图&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 240%"&gt;&lt;font face="Times New Roman"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/h1&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;下面逐个介绍与建立索引有关的一些类及它们的关系。&lt;/span&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 13pt 0pt 13pt 28.8pt"&gt;&lt;font color=#000000&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"&gt;&lt;span style="mso-list: Ignore"&gt;3.1&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体"&gt;org.apache.lucene.store.IndexWriter&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;IndexWriter&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对象只创建并维护一个索引。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;IndexWriter&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;通过指定存放的目录（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Directory&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）以及文档分析器（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Analyzer&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）来构建，&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;direcotry&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;代表索引存储（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;resides&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）在哪里；&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;analyzer&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;表示如何来分析文档的内容；&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;similarity&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;用来规格化（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;normalize&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）文档，给文档算分（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;scoring&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）；&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;IndexWriter&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类里还有一些&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;SegmentInfos&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对象用于存储索引片段信息，以及发生故障回滚等。以下是它们的类图：&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&lt;br /&gt;&lt;div align=center src_cetemp="http://www.cppblog.com/images/cppblog_com/javenstudio/4165/o_uml_lucene_indexwriter.jpg"&gt;&lt;img alt="" src="http://www.cppblog.com/images/cppblog_com/javenstudio/4165/o_uml_lucene_indexwriter.jpg" border=0&gt;&lt;/div&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 13pt 0pt 13pt 28.8pt"&gt;&lt;font color=#000000&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"&gt;&lt;span style="mso-list: Ignore"&gt;3.2&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体"&gt;org.apache.lucene.store.Directory&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Directory&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对象是一系列统一的文件列表（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;a flat list of files&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。文件可以在它们被创建的时候一次写入，一旦文件被创建，它再次打开后只能用于读取（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;read&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）或者删除（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;delete&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）操作。并且同时在读取和写入的时候允许随机访问（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;random access&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;在这里并不直接使用&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Java I/O API&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，但是更确切地说，所有&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;I/O&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;操作都是通过这个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;API&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;处理的。这使得读写操作方式更统一起来，如基于内存的索引（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;RAM-based indices&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的实现（即&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;RAMDirectory&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）、通过&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;JDBC&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;存储在数据库中的索引、将一个索引存储为一个文件的实现（即&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;FSDirectory&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Directory&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的锁机制是一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;LockFactory&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的实例实现的，可以通过调用&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Directory&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;实例的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;setLockFactory()&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;方法来更改。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt"&gt;&lt;br /&gt;&lt;div align=center src_cetemp="http://www.cppblog.com/images/cppblog_com/javenstudio/4165/o_uml_lucene_directory.jpg"&gt;&lt;img alt="" src="http://www.cppblog.com/images/cppblog_com/javenstudio/4165/o_uml_lucene_directory.jpg" border=0&gt;&lt;/div&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 13pt 0pt 13pt 28.8pt"&gt;&lt;font color=#000000&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"&gt;&lt;span style="mso-list: Ignore"&gt;3.3&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体"&gt;org.apache.lucene.store.FSDirectory&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;FSDirectory&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类直接实现&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Directory&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;抽象类为一个包含文件的目录。目录锁的实现使用缺省的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;SimpleFSLockFactory&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，但是可以通过两种方式修改，即给&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;getLockFactory()&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;传入一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;LockFactory&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;实例，或者通过调用&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;setLockFactory()&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;方法明确制定&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;LockFactory&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;目录将被缓存（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;cache&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）起来，对一个指定的符合规定的路径（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;canonical path&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）来说，同样的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;FSDirectory&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;实例通常通过&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;getDirectory()&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;方法返回。这使得同步机制（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;synchronization&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）能对目录起作用。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt"&gt;&lt;br /&gt;&lt;div align=center src_cetemp="http://www.cppblog.com/images/cppblog_com/javenstudio/4165/o_uml_lucene_fsdirectory.jpg"&gt;&lt;img height=493 alt="" src="http://www.cppblog.com/images/cppblog_com/javenstudio/4165/o_uml_lucene_fsdirectory.jpg" width=644 border=0&gt;&lt;/div&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 13pt 0pt 13pt 28.8pt"&gt;&lt;font color=#000000&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"&gt;&lt;span style="mso-list: Ignore"&gt;3.4&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体"&gt;org.apache.lucene.store.RAMDirectory&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;RAMDirectory&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类是一个驻留内存的（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;memory-resident&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Directory&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;抽象类的实现。目录锁的实现使用缺省的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;SingleInstanceLockFactory&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，但是可以通过&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;setLockFactory()&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;方法修改。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt"&gt;&amp;nbsp;&lt;br /&gt;&lt;div align=center src_cetemp="http://www.cppblog.com/images/cppblog_com/javenstudio/4165/o_uml_lucene_ramdirectory.jpg"&gt;&lt;img height=570 alt="" src="http://www.cppblog.com/images/cppblog_com/javenstudio/4165/o_uml_lucene_ramdirectory.jpg" width=626 border=0&gt;&lt;/div&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 13pt 0pt 13pt 28.8pt"&gt;&lt;font color=#000000&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"&gt;&lt;span style="mso-list: Ignore"&gt;3.5&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体"&gt;org.apache.lucene.store.IndexInput&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;IndexInput&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类是一个为了从一个目录（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Directory&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）中读取文件的抽象基类，是一个随机访问（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;random-access&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的输入流（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;input stream&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），用于所有&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Lucene&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;读取&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Index&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的操作。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;BufferedIndexInput&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;是一个实现了带缓冲的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;IndexInput&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的基础实现。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt"&gt;&lt;br /&gt;&lt;center&gt;&lt;img height=611 alt="" src="http://www.cppblog.com/images/cppblog_com/javenstudio/4165/o_uml_lucene_indexinput.jpg" width=376 border=0&gt;&lt;/center&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 13pt 0pt 13pt 28.8pt"&gt;&lt;font color=#000000&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"&gt;&lt;span style="mso-list: Ignore"&gt;3.6&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体"&gt;org.apache.lucene.store.IndexOutput&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;IndexOutput&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类是一个为了写入文件到一个目录（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Directory&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）中的抽象基类，是一个随机访问（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;random-access&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的输出流（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;output stream&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），用于所有&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Lucene&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;写入&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Index&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的操作。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;BufferedIndexOutput&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;是一个实现了带缓冲的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;IndexOutput&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的基础实现。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;RAMOuputStream&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;是一个内存驻留（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;memory-resident&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;IndexOutput&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的实现类。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt"&gt;&lt;br /&gt;&lt;center&gt;&lt;img height=617 alt="" src="http://www.cppblog.com/images/cppblog_com/javenstudio/4165/o_uml_lucene_indexoutput.jpg" width=512 border=0&gt;&lt;/center&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 13pt 0pt 13pt 28.8pt"&gt;&lt;font color=#000000&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"&gt;&lt;span style="mso-list: Ignore"&gt;3.7&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体"&gt;org.apache.lucene.store.Analyzer&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Analyzer&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类构建用于分析文本的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;TokenStream&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对象，因此（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;thus&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）它表示（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;represent&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）用于从文本中分解（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;extract&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）出组成索引的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;terms&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的一个规则器（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;policy&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。典型的（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;typical&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）实现首先创建一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Tokenizer&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，它将那些从&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Reader&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对象中读取字符流（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;stream of characters&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）打碎为（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;break into&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）原始的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Tokens&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;raw Tokens&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。然后一个或更多的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;TokenFilters&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;可以应用在这个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Tokenizer&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的输出上。警告：你必须在你的子类（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;subclass&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）中覆写（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;override&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）定义在这个类中的其中一个方法，否则的话&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Analyzer&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;将会进入一个无限循环（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;infinite loop&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）中。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt"&gt;&lt;br /&gt;&lt;center&gt;&lt;img height=255 alt="" src="http://www.cppblog.com/images/cppblog_com/javenstudio/4165/o_uml_lucene_analyzer.jpg" width=473 border=0&gt;&lt;/center&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 13pt 0pt 13pt 28.8pt"&gt;&lt;font color=#000000&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"&gt;&lt;span style="mso-list: Ignore"&gt;3.8&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体"&gt;org.apache.lucene.store.StandardAnalyzer&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;StandardAnalyzer&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类是使用一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;English&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;stop words&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;列表来进行&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;tokenize&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;分解出文本中&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;word&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，使用&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;StandardTokenizer&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类分解词，再加上&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;StandardFilter&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;以及&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;LowerCaseFilter&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;以及&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;StopFilter&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;这些过滤器进行处理的这样一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Analyzer&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类的实现。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt"&gt;&lt;br /&gt;&lt;center&gt;&lt;img height=459 alt="" src="http://www.cppblog.com/images/cppblog_com/javenstudio/4165/o_uml_lucene_standardanalyzer.jpg" width=505 border=0&gt;&lt;/center&gt;&lt;br&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 13pt 0pt 13pt 28.8pt"&gt;&lt;font color=#000000&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"&gt;&lt;span style="mso-list: Ignore"&gt;3.9&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体"&gt;org.apache.lucene.search.&lt;/span&gt;&lt;span lang=EN-US&gt;&lt;font face=Arial size=5&gt; &lt;/font&gt;&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 173%; FONT-FAMILY: 宋体"&gt;Similarity&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Similarity&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类实现算分（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;scoring&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;API&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，它的子类实现了检索算分的算法。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;DefaultSimilarity&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类是缺省的算分的实现，&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;SimilarityDelegator&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类是用于委托算分（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;delegating scoring&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的实现，在&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Query.getSimilarity(Searcher)}&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的实现里起作用，以便覆写（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;override&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Searcher&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;中&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Similarity&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;实现类的仅有的确定方法（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;certain methods&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 7.5pt"&gt;&lt;br /&gt;&lt;center&gt;&lt;img height=395 alt="" src="http://www.cppblog.com/images/cppblog_com/javenstudio/4165/o_uml_lucene_similarity.jpg" width=561 border=0&gt;&lt;/center&gt;&lt;br&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;查询&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;q&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;相对于文档&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;d&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的分数与在文档和查询向量（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;query vectors&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）之间的余弦距离（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;cosing-distance&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）或者点乘积（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;dot-product&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）有关系（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;correlates to&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），文档和查询向量存于一个信息检索（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Information Retrieval&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的向量空间模型（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Vector Space Model (VSM)&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）之中。一篇文档的向量与查询向量越接近（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;closer to&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），它的得分也越高（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;scored higher&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），这个分数按如下公式计算：&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;v:shapetype id=_x0000_t202 coordsize="21600,21600" o:spt="202" path="m,l,21600r21600,l21600,xe"&gt;&lt;v:stroke joinstyle="miter"&gt;&lt;/v:stroke&gt;&lt;v:path gradientshapeok="t" o:connecttype="rect"&gt;&lt;/v:path&gt;&lt;/v:shapetype&gt;&lt;v:shape id=_x0000_s1026 style="MARGIN-TOP: 6.75pt; Z-INDEX: 1; LEFT: 0px; MARGIN-LEFT: 0px; WIDTH: 477pt; TEXT-INDENT: 0px; POSITION: absolute; HEIGHT: 39pt; TEXT-ALIGN: left" fillcolor="#eaeaea" type="#_x0000_t202"&gt;&lt;/v:shape&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;br /&gt;&lt;div align=center src_cetemp="/images/cppblog_com/javenstudio/4165/o_exp_lucene_similarity_1.jpg"&gt;&lt;img height=57 alt="" src="http://www.cppblog.com/images/cppblog_com/javenstudio/4165/o_exp_lucene_similarity_1.jpg" width=640 border=0&gt;&lt;/div&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br style="mso-ignore: vglayout" clear=all&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;其中：&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 41pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 41.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;span style="mso-list: Ignore"&gt;1.&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;tf(t in d)&lt;/span&gt;&lt;/strong&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;与&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;term&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的出现次数（&lt;/span&gt;&lt;em style="mso-bidi-font-style: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;frequency&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）有关系（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;correlate to&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），定义为（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;defined as&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;term &lt;strong style="mso-bidi-font-weight: normal"&gt;t&lt;/strong&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;在当前算分（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;currently scored&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的文档&lt;/span&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;d&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;中出现（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;appear in&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的次数（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;number of times&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。对一个给定（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;gived&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;term&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，那些出现此&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;term&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的次数越多（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;more occurences&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的文档将获得越高的分数（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;higher score&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。缺省的&lt;/span&gt;&lt;em style="mso-bidi-font-style: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;tf(t in d)&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;算法实现在&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;DefaultSimilarity&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类中，公式如下：&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt"&gt;&lt;br /&gt;&lt;div align=center src_cetemp="/images/cppblog_com/javenstudio/4165/o_exp_lucene_similarity_2.jpg"&gt;&lt;img height=57 alt="" src="http://www.cppblog.com/images/cppblog_com/javenstudio/4165/o_exp_lucene_similarity_2.jpg" width=281 border=0&gt;&lt;/div&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 41pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 41.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;span style="mso-list: Ignore"&gt;2.&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;idf(t) &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;代表（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;stand for&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）反转文档频率（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Inverse Document Frequency&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。这个分数与反转（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;inverse of&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的&lt;/span&gt;&lt;em style="mso-bidi-font-style: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;docFreq&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;（出现过&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;term &lt;strong style="mso-bidi-font-weight: normal"&gt;t&lt;/strong&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的文档数目）有关系。这个分数的意义是越不常出现（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;rarer&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;term&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;将为最后的总分贡献（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;contribution&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）更多的分数。缺省&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;idf&lt;em style="mso-bidi-font-style: normal"&gt;f(t in d)&lt;/em&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;算法实现在&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;DefaultSimilarity&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类中，公式如下：&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt"&gt;&lt;br /&gt;&lt;div align=center src_cetemp="/images/cppblog_com/javenstudio/4165/o_exp_lucene_similarity_3.jpg"&gt;&lt;img height=67 alt="" src="http://www.cppblog.com/images/cppblog_com/javenstudio/4165/o_exp_lucene_similarity_3.jpg" width=281 border=0&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 41pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 41.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;span style="mso-list: Ignore"&gt;3.&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;coord(q,d) &lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;是一个评分因子，基于（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;based on&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）有多少个查询&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;terms&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;在特定的文档（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;specified document&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）中被找到。通常（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;typically&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），一篇包含了越多的查询&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;terms&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的文档将比另一篇包含更少查询&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;terms&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的文档获得更高的分数。这是一个搜索时的因子（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;search time factor&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）是在搜索的时候起作用（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;in effect at search time&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），它在&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Similarity&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对象的&lt;/span&gt;&lt;em style="mso-bidi-font-style: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;coord(q,d)&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;函数中计算。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 41pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 41.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;span style="mso-list: Ignore"&gt;4.&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;queryNorm(q)&lt;/span&gt;&lt;/strong&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;是一个修正因子（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;normalizing factor&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），用来使不同查询间的分数更可比较（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;comparable&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。这个因子不影响文档的排名（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;ranking&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）（因为搜索排好序的文档（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;ranked document&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）会增加（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;multiplied&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）相同的因数（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;same factor&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）），更确切地说只是（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;but rather just&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）为了尝试（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;attempt to&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）使得不同查询条件（甚至不同索引（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;different indexes&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;））之间更可比较性。这是一个搜索时的因子是在搜索的时候起作用，由&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Similarity&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对象计算。缺省&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;queryNorm&lt;em style="mso-bidi-font-style: normal"&gt;(q)&lt;/em&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;算法实现在&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;DefaultSimilarity&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类中，公式如下：&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt"&gt;&lt;br /&gt;&lt;div align=center src_cetemp="/images/cppblog_com/javenstudio/4165/o_exp_lucene_similarity_4.jpg"&gt;&lt;img height=78 alt="" src="http://www.cppblog.com/images/cppblog_com/javenstudio/4165/o_exp_lucene_similarity_4.jpg" width=565 border=0&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 41pt"&gt;&lt;em style="mso-bidi-font-style: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;sumOfSquaredWeights&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;（查询的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;terms&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）是由查询&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Weight&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对象计算的，例如一个布尔（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;boolean&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）条件查询的计算公式为：&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt"&gt;&lt;br /&gt;&lt;div align=center src_cetemp="/images/cppblog_com/javenstudio/4165/o_exp_lucene_similarity_5.jpg"&gt;&lt;img height=57 alt="" src="http://www.cppblog.com/images/cppblog_com/javenstudio/4165/o_exp_lucene_similarity_5.jpg" width=467 border=0&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 41pt; TEXT-INDENT: -21pt; mso-list: l1 level1 lfo1; tab-stops: list 41.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;span style="mso-list: Ignore"&gt;5.&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;t.getBoost()&lt;/span&gt;&lt;/strong&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;是一个搜索时（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;search time&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的代表查询&lt;/span&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;q&lt;/span&gt;&lt;/strong&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;中的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;term&lt;strong style="mso-bidi-font-weight: normal"&gt; t&lt;/strong&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;boost&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;数值，具体指定在（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;as specified in&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）查询的文本中（参见查询语法），或者由应用程序调用&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;setBoost()&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;来指定。需要注意的是实际上（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;really&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）没有一个直接（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;direct&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;API&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;来访问（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;accessing&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）一个多个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;term&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的查询（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;multi term query&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）中的一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;term &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;boost&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;值，更确切地说（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;but rather&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），多个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;terms&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;multi terms&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）在一个查询里的表示形式（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;represent as&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）是多个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;TermQuery&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对象，所以查询里的一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;term&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;boost&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;值的访问是通过调用子查询（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;sub-query&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;getBoost()&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;方法实现的。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 41pt; TEXT-INDENT: -21pt; mso-list: l1 level1 lfo1; tab-stops: list 41.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;span style="mso-list: Ignore"&gt;6.&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;norm(t,d)&lt;/span&gt;&lt;/strong&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;是提炼取得（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;encapsulate&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）一小部分&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;boost&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;值（在索引时间）和长度因子（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;length factor&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）：&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 62pt; TEXT-INDENT: -21pt; mso-list: l0 level2 lfo2; tab-stops: list 62.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;span style="mso-list: Ignore"&gt;ú&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;document boost &lt;/span&gt;&lt;/strong&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;– &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;在添加文档到索引之前通过调用&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;doc.setBoost()&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;来设置。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 62pt; TEXT-INDENT: -21pt; mso-list: l0 level2 lfo2; tab-stops: list 62.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;span style="mso-list: Ignore"&gt;ú&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Field boost &lt;/span&gt;&lt;/strong&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;– &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;在添加&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Field&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;到文档之前通过调用&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;field.setBoost()&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;来设置。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 62pt; TEXT-INDENT: -21pt; mso-list: l0 level2 lfo2; tab-stops: list 62.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;span style="mso-list: Ignore"&gt;ú&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;lengthNorm(field)&lt;/span&gt;&lt;/strong&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt; – &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;在文档添加到索引的时候，根据（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;in accordance with&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）文档中该&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;field&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;tokens&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;数目计算得出，所以更短（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;shorter&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;field&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;会贡献更多的分数。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;lengthNorm&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;是在索引的时候起作用，由&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Similarity&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类计算得出。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 41pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;当一篇文档被添加到索引的时候，所有上面计算出的因子将相乘起来（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;multiplied&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。如果文档拥有多个相同名字的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;fields&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;multiple fields with same name&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），所有这些&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;fields&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;boost&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;值也会被一起相乘起来（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;multiplied together&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）：&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt"&gt;&lt;br /&gt;&lt;div align=center src_cetemp="/images/cppblog_com/javenstudio/4165/o_exp_lucene_similarity_6.jpg"&gt;&lt;img height=58 alt="" src="http://www.cppblog.com/images/cppblog_com/javenstudio/4165/o_exp_lucene_similarity_6.jpg" width=513 border=0&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 41pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;然而&lt;/span&gt;&lt;em style="mso-bidi-font-style: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;norm&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;数值的结果在被存储（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;stored&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）之前被编码成（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;encoded as&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）一个单独的字节&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;(single byte)&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。在检索的时候，这个&lt;/span&gt;&lt;em style="mso-bidi-font-style: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;norm&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;字节值从索引目录（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;index directory&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）中读取出来，并解码回（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;decoded back&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）一个&lt;/span&gt;&lt;em style="mso-bidi-font-style: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;norm&lt;/span&gt;&lt;/em&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;浮点数值（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;float value&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。这个编&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;/&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;解码（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;encoding/decoding&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）行为，会缩减（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;reduce&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）索引的大小（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;index size&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），这得自于（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;come with&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）精度损耗的代价（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;price of precision loss&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;- &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;它不保证&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;decode(encode(x))=x&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，举例来说&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;decode(encode(0.89))=0.75&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。还有需要注意的是，检索的时候再修改评分（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;scoring&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的这个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;norm&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;部分已近太迟了，例如，为检索使用不同的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Similarity&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt"&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Annotated Lucene &lt;/span&gt;&lt;span style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;作者：&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 7.5pt"&gt;naven &lt;/span&gt;&lt;span style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;日期：&lt;/span&gt;&lt;st1:chsdate IsROCDate="False" IsLunarDate="False" Day="1" Month="5" Year="2007" w:st="on"&gt;&lt;span lang=EN-US style="FONT-SIZE: 7.5pt"&gt;2007-5-1&lt;/span&gt;&lt;/st1:chsdate&gt;&lt;span lang=EN-US style="FONT-SIZE: 7.5pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344303-4885834803148016463?l=javenstudio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javenstudio.blogspot.com/feeds/4885834803148016463/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344303&amp;postID=4885834803148016463' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344303/posts/default/4885834803148016463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344303/posts/default/4885834803148016463'/><link rel='alternate' type='text/html' href='http://javenstudio.blogspot.com/2007/05/annotated-lucene.html' title='Annotated Lucene：第二节 认识一下与索引有关的类'/><author><name>Javen-Studio</name><uri>http://www.blogger.com/profile/09021504944813976215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.cppblog.com/images/cppblog_com/javenstudio/94/o_longhorn.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344303.post-8312097988279487742</id><published>2007-05-07T04:40:00.000-07:00</published><updated>2007-05-07T04:41:43.828-07:00</updated><title type='text'>Annotated Lucene：第一节 Lucene是什么</title><content type='html'>&lt;blockquote dir=ltr style="MARGIN-RIGHT: 0px"&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 13pt 0pt; TEXT-INDENT: 0pt; TEXT-ALIGN: center; mso-list: none; tab-stops: 21.0pt" align=center&gt;&lt;font color=#000000&gt;&lt;span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 173%"&gt;&lt;font face=Arial&gt;Annotated Lucene(&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; LINE-HEIGHT: 173%; FONT-FAMILY: 黑体; mso-ascii-font-family: Arial"&gt;中文版&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 12pt; LINE-HEIGHT: 173%"&gt;&lt;font face=Arial&gt;) &lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/h2&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 7.5pt"&gt;Annotated Lucene &lt;/span&gt;&lt;span style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;作者：&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 7.5pt"&gt;naven&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;h1 style="MARGIN: 17pt 0pt 16.5pt 21.6pt"&gt;&lt;font face="Times New Roman"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 240%; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font color=#000000&gt;1&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 240%"&gt;&lt;font color=#000000&gt;Lucene&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font color=#000000&gt;&lt;span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 240%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;是什么&lt;/span&gt;&lt;span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 240%"&gt;&lt;font face="Times New Roman"&gt; &lt;span lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/h1&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Apache Lucene&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;是一个高性能（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;high-performance&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的全能的全文检索（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;full-featured text search engine&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的搜索引擎框架库，完全（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;entirely&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）使用&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Java&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;开发。它是一种技术（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;technology&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），适合于（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;suitable for&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）几乎（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;nearly&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）任何一种需要全文检索（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;full-text search&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的应用，特别是跨平台（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;cross-platform&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的应用。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Lucene &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;通过一些简单的接口（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;simple API&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）提供了强大的特征（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;powerful features&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）：&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20.1pt; mso-char-indent-count: 2.0"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;可扩展的高性能的索引能力（&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Scalable, High-Performance Indexing&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 41pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo3; tab-stops: list 41.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;span style="mso-list: Ignore"&gt;ü&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;超过&lt;/span&gt;&lt;st1:chmetcnv TCSC="0" NumberType="1" Negative="False" HasSpace="False" SourceValue="20" UnitName="m" w:st="on"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;20M&lt;/span&gt;&lt;/st1:chmetcnv&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;/&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;分钟的处理能力（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Pentium M 1.5GHz&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 41pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo3; tab-stops: list 41.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;span style="mso-list: Ignore"&gt;ü&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;很少的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;RAM&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;内存需求，只需要&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;1MB heap&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 41pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo3; tab-stops: list 41.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;span style="mso-list: Ignore"&gt;ü&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;增量索引（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;incremental indexing&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的速度与批量索引（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;batch indexing&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的速度一样快&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 41pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo3; tab-stops: list 41.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;span style="mso-list: Ignore"&gt;ü&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;索引的大小粗略（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;roughly&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）为被索引的文本大小的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;20-30%&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20.1pt; mso-char-indent-count: 2.0"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;强大的精确的高效率的检索算法（&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Powerful, Accurate and Efficient Search Algorithms&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 41pt; TEXT-INDENT: -21pt; mso-list: l2 level1 lfo2; tab-stops: list 41.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;span style="mso-list: Ignore"&gt;ü&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;分级检索（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;ranked searching&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）能力，最好的结果优先推出在前面&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 41pt; TEXT-INDENT: -21pt; mso-list: l2 level1 lfo2; tab-stops: list 41.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;span style="mso-list: Ignore"&gt;ü&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;很多强大的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;query&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;种类：&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;phrase queries, wildcard queries, proximity queries, range queries&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;等&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 41pt; TEXT-INDENT: -21pt; mso-list: l2 level1 lfo2; tab-stops: list 41.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;span style="mso-list: Ignore"&gt;ü&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;支持域检索（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;fielded searching&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），如标题、作者、正文等&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 41pt; TEXT-INDENT: -21pt; mso-list: l2 level1 lfo2; tab-stops: list 41.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;span style="mso-list: Ignore"&gt;ü&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;支持日期范围检索（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;date-range searching&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 41pt; TEXT-INDENT: -21pt; mso-list: l2 level1 lfo2; tab-stops: list 41.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;span style="mso-list: Ignore"&gt;ü&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;可以按任意域排序（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;sorting by any field&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 41pt; TEXT-INDENT: -21pt; mso-list: l2 level1 lfo2; tab-stops: list 41.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;span style="mso-list: Ignore"&gt;ü&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;支持多个索引的检索（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;multiple-index searching&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）并合并结果集（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;merged results&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 41pt; TEXT-INDENT: -21pt; mso-list: l2 level1 lfo2; tab-stops: list 41.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;span style="mso-list: Ignore"&gt;ü&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;允许更新和检索（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;update and searching&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）并发进行（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;simultaneous&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20.1pt; mso-char-indent-count: 2.0"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;跨平台解决方案（&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Cross-Platform Solution&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 41pt; TEXT-INDENT: -21pt; mso-list: l2 level1 lfo2; tab-stops: list 41.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;span style="mso-list: Ignore"&gt;ü&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;以&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Open Source&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;方式提供并遵循&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Apache License&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，允许你可以在即包括商业应用也包括&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Open Source&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;程序中使用&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Lucene&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 41pt; TEXT-INDENT: -21pt; mso-list: l2 level1 lfo2; tab-stops: list 41.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;span style="mso-list: Ignore"&gt;ü&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;100%-pure Java&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;（纯&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Java&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;实现）&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 41pt; TEXT-INDENT: -21pt; mso-list: l2 level1 lfo2; tab-stops: list 41.0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"&gt;&lt;span style="mso-list: Ignore"&gt;ü&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;提供其他开发语言的实现版本并且它们的索引文件是兼容的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Lucene API&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;被分成（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;divide into&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）如下几种包（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;package&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20pt; mso-char-indent-count: 2.0"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20.1pt; mso-char-indent-count: 2.0"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;org.apache.lucene.analysis&lt;/span&gt;&lt;/strong&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;定义了一个抽象的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Analyser API&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，用于将&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;text&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;文本从一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;java.io.Reader&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;转换成一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;TokenStream&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，即包括一些&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Tokens&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的枚举容器（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;enumeration&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;TokenStream&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的组成（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;compose&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）是通过在一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Tokenizer&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的输出的结果上再应用&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;TokenFilters&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;生成的。一些少量的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Analysers&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;实现已经提供，包括&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;StopAnalyzer&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;和基于语法（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;gramar-based&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）分析的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;StandardAnalyzer&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20.1pt; mso-char-indent-count: 2.0"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;org.apache.lucene.document&lt;/span&gt;&lt;/strong&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;提供一个简单的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Document&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类，一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;document&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;只不过包括一系列的命名了（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;named&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Fields&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;（域），它们的内容可以是文本（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;strings&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）也可以是一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;java.io.Reader&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的实例。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20.1pt"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;org.apache.lucene.index&lt;/span&gt;&lt;/strong&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;提供两个主要地饿类，一个是&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;IndexWriter&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;用于创建索引并添加文档（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;document&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），另一个是&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;IndexReader&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;用于访问索引中的数据。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 20.1pt"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;org.apache.lucene.search&lt;/span&gt;&lt;/strong&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;提供数据结构（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;data structures&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）来呈现（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;represent&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）查询（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;queries&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）：&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;TermQuery&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;用于单个的词（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;individual words&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;PhraseQuery&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;用于短语，&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;BooleanQuery&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;用于通过&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;boolean&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;关系组合（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;combinations&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）在一起的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;queries&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。而抽象的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Searcher&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;用于转变&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;queries&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;为命中的结果（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;hits&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;IndexSearcher&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;实现了在一个单独（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;single&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;IndexReader&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;上检索。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 21pt"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;org.apache.lucene.queryParser&lt;/span&gt;&lt;/strong&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;使用&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;JavaCC&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;实现一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;QueryParser&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 21pt"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;org.apache.lucene.store&lt;/span&gt;&lt;/strong&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;定义了一个抽象的类用于存储呈现的数据&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;(storing persistent data)&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，即&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Directory&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;（目录），一个收集器（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;collection&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）包含了一些命名了的文件（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;named files&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），它们通过一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;IndexOutput&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;来写入，以及一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;IndexInput&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;来读取。提供了两个实现，&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;FSDirectory&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;使用一个文件系统目录来存储文件，而另一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;RAMDirectory&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;则实现了将文件当作驻留内存的数据结构（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;memory-resident data structures&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt; TEXT-INDENT: 21pt"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;org.apache.lucene.util&lt;/span&gt;&lt;/strong&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;span style="mso-tab-count: 2"&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;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;包含了一小部分有用（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;handy&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的数据结构，如&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;BitVector&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;和&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;PriorityQueue&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;等。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;h1 style="MARGIN: 17pt 0pt 16.5pt 21.6pt"&gt;&lt;font face="Times New Roman"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 240%; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font color=#000000&gt;2&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 240%"&gt;&lt;font color=#000000&gt;Hello World!&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/h1&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 5.25pt; TEXT-INDENT: 15pt; mso-char-indent-count: 1.5; mso-para-margin-left: .5gd"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;下面是一段简单的代码展示如何使用&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Lucene&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;来进行索引和检索（使用&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;JUnit&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;来检查结果是否是我们预期的）：&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 5.25pt; TEXT-INDENT: 15pt; mso-char-indent-count: 1.5; mso-para-margin-left: .5gd"&gt;&lt;v:shapetype id=_x0000_t202 coordsize="21600,21600" o:spt="202" path="m,l,21600r21600,l21600,xe"&gt;&lt;v:stroke joinstyle="miter"&gt;&lt;/v:stroke&gt;&lt;v:path gradientshapeok="t" o:connecttype="rect"&gt;&lt;/v:path&gt;&lt;/v:shapetype&gt;&lt;v:shape id=_x0000_s1028 style="MARGIN-TOP: 6.95pt; Z-INDEX: 2; LEFT: 0px; MARGIN-LEFT: 18pt; WIDTH: 405pt; TEXT-INDENT: 0px; POSITION: absolute; HEIGHT: 265.2pt; TEXT-ALIGN: left; mso-position-horizontal: absolute; mso-position-vertical: absolute" fillcolor="#eaeaea" type="#_x0000_t202"&gt;&lt;/v:shape&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 5.25pt; TEXT-INDENT: 15pt; mso-char-indent-count: 1.5; mso-para-margin-left: .5gd"&gt;&lt;/p&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;Store&amp;nbsp;the&amp;nbsp;index&amp;nbsp;in&amp;nbsp;memory:&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Directory&amp;nbsp;directory&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;RAMDirectory();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;To&amp;nbsp;store&amp;nbsp;an&amp;nbsp;index&amp;nbsp;on&amp;nbsp;disk,&amp;nbsp;use&amp;nbsp;this&amp;nbsp;instead:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;Directory&amp;nbsp;directory&amp;nbsp;=&amp;nbsp;FSDirectory.getDirectory("/tmp/testindex");&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IndexWriter&amp;nbsp;iwriter&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;IndexWriter(directory,&amp;nbsp;analyzer,&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;true&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iwriter.setMaxFieldLength(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;25000&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Document&amp;nbsp;doc&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;Document();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;text&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;This&amp;nbsp;is&amp;nbsp;the&amp;nbsp;text&amp;nbsp;to&amp;nbsp;be&amp;nbsp;indexed.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;doc.add(&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;Field(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;fieldname&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;text,&amp;nbsp;Field.Store.YES,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Field.Index.TOKENIZED));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iwriter.addDocument(doc);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iwriter.optimize();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iwriter.close();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;Now&amp;nbsp;search&amp;nbsp;the&amp;nbsp;index:&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IndexSearcher&amp;nbsp;isearcher&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;IndexSearcher(directory);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;Parse&amp;nbsp;a&amp;nbsp;simple&amp;nbsp;query&amp;nbsp;that&amp;nbsp;searches&amp;nbsp;for&amp;nbsp;"text":&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;QueryParser&amp;nbsp;parser&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;QueryParser(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;fieldname&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;analyzer);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Query&amp;nbsp;query&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;parser.parse(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;text&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Hits&amp;nbsp;hits&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;isearcher.search(query);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;assertEquals(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;hits.length());&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;//&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&amp;nbsp;Iterate&amp;nbsp;through&amp;nbsp;the&amp;nbsp;results:&lt;/span&gt;&lt;span style="COLOR: #008000"&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;for&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;0&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;hits.length();&amp;nbsp;i&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;++&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;)&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Document&amp;nbsp;hitDoc&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;nbsp;hits.doc(i);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;assertEquals(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;This&amp;nbsp;is&amp;nbsp;the&amp;nbsp;text&amp;nbsp;to&amp;nbsp;be&amp;nbsp;indexed.&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;,&amp;nbsp;hitDoc.&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;get&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;fieldname&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;isearcher.close();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;directory.close();&amp;nbsp;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 5.25pt; TEXT-INDENT: 15pt; mso-char-indent-count: 1.5; mso-para-margin-left: .5gd"&gt;&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 5.25pt; TEXT-INDENT: 15pt; mso-char-indent-count: 1.5; mso-para-margin-left: .5gd"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 5.25pt; TEXT-INDENT: 15pt; mso-char-indent-count: 1.5; mso-para-margin-left: .5gd"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;为了使用&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Lucene&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，一个应用程序需要做如下几件事：&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 41.25pt; TEXT-INDENT: -21pt; mso-list: l1 level1 lfo4; tab-stops: list 41.25pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;span style="mso-list: Ignore"&gt;1.&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;通过添加一系列&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Fields&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;来创建一批&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Documents&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对象。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 41.25pt; TEXT-INDENT: -21pt; mso-list: l1 level1 lfo4; tab-stops: list 41.25pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;span style="mso-list: Ignore"&gt;2.&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;创建一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;IndexWriter&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对象，并且调用它的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;AddDocument()&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;方法来添加进&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;Documents&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 41.25pt; TEXT-INDENT: -21pt; mso-list: l1 level1 lfo4; tab-stops: list 41.25pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;span style="mso-list: Ignore"&gt;3.&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;调用&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;QueryParser.parse()&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;处理一段文本（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;string&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）来建造一个查询（&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;query&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）对象。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 41.25pt; TEXT-INDENT: -21pt; mso-list: l1 level1 lfo4; tab-stops: list 41.25pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;span style="mso-list: Ignore"&gt;4.&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;创建一个&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;IndexReader&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对象并将查询对象传入到它的&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;search()&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;方法中。&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0pt 0pt 0pt 5.25pt; TEXT-INDENT: 15pt; mso-char-indent-count: 1.5; mso-para-margin-left: .5gd"&gt;&lt;span lang=EN-US style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;h1 style="MARGIN: 17pt 0pt 16.5pt 21.6pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 7.5pt"&gt;&lt;br&gt;Annotated Lucene &lt;/span&gt;&lt;span style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;作者：&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 7.5pt"&gt;naven &lt;/span&gt;&lt;span style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;日期：&lt;/span&gt;&lt;st1:chsdate w:st="on" IsROCDate="False" IsLunarDate="False" Day="1" Month="5" Year="2007"&gt;&lt;span lang=EN-US style="FONT-SIZE: 7.5pt"&gt;2007-5-1&lt;/span&gt;&lt;/st1:chsdate&gt;&lt;span lang=EN-US style="FONT-SIZE: 7.5pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h1&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344303-8312097988279487742?l=javenstudio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javenstudio.blogspot.com/feeds/8312097988279487742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344303&amp;postID=8312097988279487742' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344303/posts/default/8312097988279487742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344303/posts/default/8312097988279487742'/><link rel='alternate' type='text/html' href='http://javenstudio.blogspot.com/2007/05/annotated-lucene-lucene.html' title='Annotated Lucene：第一节 Lucene是什么'/><author><name>Javen-Studio</name><uri>http://www.blogger.com/profile/09021504944813976215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.cppblog.com/images/cppblog_com/javenstudio/94/o_longhorn.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344303.post-6106916604316815511</id><published>2007-05-07T04:37:00.000-07:00</published><updated>2007-05-07T04:38:47.305-07:00</updated><title type='text'>Naven原创系列文章下载</title><content type='html'>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;这是本人原创的系列文章制作的pdf，已陆续发布cppblog上，现开放下载，谢谢支持！&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1，&lt;a href="http://www.cppblog.com/Files/javenstudio/Javen库的设计.rar"&gt;《Javen库的设计和使用》&lt;br&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2，&lt;a href="http://www.cppblog.com/Files/javenstudio/LINQ，语言层面的OR映射技术，用面向对象操作数据库.rar"&gt;《LINQ，语言层面的OR映射技术，用面向对象操作数据库》&lt;/a&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3，&lt;a href="http://www.cppblog.com/Files/javenstudio/侯捷C++OOPGPDP讲座心得-naven.rar"&gt;《侯捷《C++OOPGPDP》讲座心得》&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19344303-6106916604316815511?l=javenstudio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javenstudio.blogspot.com/feeds/6106916604316815511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19344303&amp;postID=6106916604316815511' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19344303/posts/default/6106916604316815511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19344303/posts/default/6106916604316815511'/><link rel='alternate' type='text/html' href='http://javenstudio.blogspot.com/2007/05/naven.html' title='Naven原创系列文章下载'/><author><name>Javen-Studio</name><uri>http://www.blogger.com/profile/09021504944813976215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://www.cppblog.com/images/cppblog_com/javenstudio/94/o_longhorn.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19344303.post-3501039393361502599</id><published>2007-05-07T04:35:00.000-07:00</published><updated>2007-05-07T04:36:28.829-07:00</updated><title type='text'>侯捷《C++/OOP/GP/DP》讲座心得</title><content type='html'>&lt;h3 style="MARGIN: 13pt 0cm; TEXT-ALIGN: center" align=center&gt;&lt;span style="FONT-FAMILY: 黑体"&gt;&lt;font size=5&gt;侯捷《&lt;span lang=EN-US&gt;C++/OOP/GP/DP&lt;/span&gt;》讲座心得&lt;span lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt; &lt;/span&gt;&lt;/h3&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&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;&lt;/span&gt; &lt;span style="mso-spacerun: yes"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&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;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt; &lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;em style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;———&lt;/span&gt; &lt;/em&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;em style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;作者：&lt;/span&gt; &lt;span lang=EN-US&gt;naven&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;很高兴侯捷老师又来公司了，给我们上了四天非常生动的技术讲座，受益匪浅，现在我简要介绍一下我的学习心得，与大家分享。这次讲座主要集中在《&lt;/span&gt; &lt;span lang=EN-US style="COLOR: navy; FONT-FAMILY: 'Courier New'"&gt;C++/OOP/GP/DP&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;》主题，针对有一些编程基础的工程师，对一些常用的代码和设计做了非常通俗易懂的剖析，非常有帮助。当然更深入的理解还需要结合多种技术名著来学习，我结合我的理解以及自己的学习和开发的经验介绍一下&lt;/span&gt; &lt;span lang=EN-US style="COLOR: navy; FONT-FAMILY: 'Courier New'"&gt;C++/OO/Template&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;以及&lt;/span&gt; &lt;span lang=EN-US style="COLOR: navy; FONT-FAMILY: 'Courier New'"&gt;Design Pattern&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的理会，考虑到讲座的性质，我并不直述本次讲座的内容，欢迎批评指正&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: Wingdings; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;&lt;span style="mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;J&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;侯捷老师的讲座基本是讲述他多年来在&lt;/span&gt; &lt;span lang=EN-US&gt;C++ &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;领域的研究成果，基本大部分都可以在他的书籍和网站上能读到，但是考虑到最近几年软件技术的蓬勃发展，如&lt;/span&gt; &lt;span lang=EN-US style="COLOR: navy; FONT-FAMILY: 'Courier New'"&gt;Design Pattern&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的更广泛应用，又有许多心得，基本上是较为泛的基础的层面，并结合实际代码和应用，对实际项目开发非常有益。下面我逐个主题泛泛地讲一遍。&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;面向对象中的合成（&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 'Arial Black'; mso-fareast-font-family: 黑体"&gt;Composition&lt;/span&gt; &lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;）和继承（&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 'Arial Black'; mso-fareast-font-family: 黑体"&gt;Inheritance&lt;/span&gt; &lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;）关系&lt;span lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;通常扩展一个类的功能主要有两种方式，一种是大家很熟悉的继承（&lt;/span&gt; &lt;span lang=EN-US style="COLOR: navy; FONT-FAMILY: 'Courier New'"&gt;inheritance&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），另一种就是合成（&lt;/span&gt; &lt;span lang=EN-US style="COLOR: navy; FONT-FAMILY: 'Courier New'"&gt;composition&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），很多初学&lt;/span&gt; &lt;span lang=EN-US&gt;OO&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;（面向对象）并有一些经验都很容易搞混这个的区别，其实很简单，继承是解决&lt;/span&gt; &lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="COLOR: navy; FONT-FAMILY: 'Courier New'"&gt;Is-a&lt;/span&gt; &lt;/strong&gt;&lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的问题，而合成是解决&lt;/span&gt; &lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span lang=EN-US style="COLOR: navy; FONT-FAMILY: 'Courier New'"&gt;Has-a&lt;/span&gt; &lt;/strong&gt;&lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的问题。比如说小鸟有两个翅膀，就是合成，而鸟是一种飞禽，就是继承了，设计一个“小鸟”的类，它继承自”飞禽”，就具有“飞”的特性，但要用合成的方法“包含”一个“翅膀”的类才具有真正“飞”的功能。&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;别看这两个定义很简单，其实很多人都犯过错误，包括&lt;/span&gt; &lt;span lang=EN-US&gt;Java&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类库的设计者，他们就把&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Properties&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;直接“继承”自&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Hashtable&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;了，这里其实应该用“合成”。&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;讲到合成，就应该说说聚合（&lt;/span&gt; &lt;span lang=EN-US style="COLOR: navy; FONT-FAMILY: 'Courier New'"&gt;Aggregation&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），它是描述整体和局部的关系，合成其实是一种“强烈”的聚合，它与局部具有相同的生命周期，“容纳”局部的“对象”，而聚合只是“容纳”局部的一个“指针”。比如说，人和脑袋就是合成，而汽车与发动机就是聚合，改装汽车可以任意替换更好的发动机，而人的脑袋就不行（目前是这样：）&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;聚合在&lt;/span&gt; &lt;span lang=EN-US&gt;UML&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;中是以空心棱形的箭头表示，合成是以实心棱形的箭头表示。&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;还有一种关系叫委托（&lt;/span&gt; &lt;span lang=EN-US style="COLOR: navy; FONT-FAMILY: 'Courier New'"&gt;Delegation&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），委托是一种让合成（&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;composition&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）变得像继承（&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;inheritance&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的复用能力一样强大的方式。（&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;a way of making composition as powerful for reuse as inheritance [Lie86, JZ91]&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）在委托中，两个对象在处理一个请求的时候发生关联：一个接收的对象委派操作给它的委托对象。这跟子类（&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;subclass&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）延迟请求（&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;deferring requests&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）给它的父类（&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;parent class&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）来实现类似。但是在继承里，一个被继承的操作（&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;inherited operation&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）通过&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;this&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;成员变量能够经常引用到那个接收的对象。为了在委托里达到同样的效果，接受者传递它自己给它的委托者，以便被委托的操作能够引用到这个接收者。&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;再说一下继承（&lt;/span&gt; &lt;span lang=EN-US style="COLOR: navy; FONT-FAMILY: 'Courier New'"&gt;Inheritance&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），它是将基类（&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;base-class&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）所有一切（包括&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;private&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）都继承下来，所以假如你想实现一个新的类，只想继承一部分，就用合成（&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Composition&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）别用继承。或者更进一步来讲，如果你想改造一个类，想改造一些接口（&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;interface&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），也建议用合成，通过转调内部对象的方法实现，别用虚函数（&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;virtual function&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）。这是非常符合最基本的&lt;/span&gt; &lt;span lang=EN-US&gt;OCP&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;设计原则（&lt;/span&gt; &lt;span lang=EN-US style="COLOR: navy; FONT-FAMILY: 'Courier New'"&gt;Open-Closed Principle&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，开闭原则）的方式了。&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;类的构造（&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 'Arial Black'; mso-fareast-font-family: 黑体"&gt;Constructor&lt;/span&gt; &lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;）和析构（&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 'Arial Black'; mso-fareast-font-family: 黑体"&gt;Destructor&lt;/span&gt; &lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;）&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类的构造和析构是最基础的知识了，任何一个类的对象产生和销毁都必须有这两个步骤，但是它们是如何工作的，编译器是如何制造缺省的&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;ctor&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;和&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;dtor&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的，估计少有人关注了。&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;一个类的对象的产生，会依次从它最里面的类开始构造，同一个类会跟据内部类成员定义的顺序依次构造。类对象的销毁的过程则相反。基类的构造器会在用户定义的&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;ctor&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;之前调用，基类的析构则是在用户定义的&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;dtor&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;之后进行。熟悉这些过程，非常有利于设计出优秀的类库，也不容易出现内存泄露和资源耗尽等问题。下面举个例子更容易理解：&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;class A { public: A(); ~A(); }; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;class B { public: B(); ~B(); }; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;class C { public: C(); ~C(); }; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;class D : public A, B { &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;public: D() { init(); } ~D() { release(); } &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;private: void init(); void release(); C c; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;};&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;上面的定义中&lt;/span&gt; &lt;span lang=EN-US&gt;D &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类的&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;ctor &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;构造过程如下：&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;A::A(); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;B::B(); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;c.C::C(); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;D::init();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;D &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类的&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;dtor &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;析构过程如下：&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;D::release(); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;c.C::~C(); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;B::~B(); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;A::~A(); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;更复杂的继承关系以及多重继承的构造和析构过程类似，有兴趣的人可以写程序测试：）&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;还有一个问题，编译器会在什么时候自动产生&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;ctor&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;和&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;dtor&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的呢，又是如何产生的呢&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;其实很简单，当你没有写缺省构造函数（&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;default constructor&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）和缺省析构函数（&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;default destructor&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的时候，编译器就会给你自动生成一个，换句话说，任何类都有构造函数和析构函数，虽然有时候什么都不做，还有复制构造函数（&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;copy ctor&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）也会自动生成。但是如何产生会跟你的类的成员有关。如果成员都是原生类型，还有如果类成员也全部为原生类型，&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;ctor &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;将只会跟普通变量定义的初始化一样，给一个初值，&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;dtor &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;则什么都不做，&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;copy ctor&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;则会使用内存复制（&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;memcpy&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的方式复制对象。如果成员包含一个或多个类成员，而且至少有一个类成员定义有缺省构造方法，则产生的&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;ctor &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;会依次调用每个成员的&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;ctor&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;dtor&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;和&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;copy-ctor &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;产生方法类似。（详见《&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Inside the C++ Object Model&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;》）&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;多态（&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 'Arial Black'; mso-fareast-font-family: 黑体"&gt;Polymorphism&lt;/span&gt; &lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;）和虚函数（&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 'Arial Black'; mso-fareast-font-family: 黑体"&gt;Virtual function&lt;/span&gt; &lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;）&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;多态是面向对象的基本特性，&lt;/span&gt; &lt;span lang=EN-US&gt;C++&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;里是通过&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;virtual &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;关键词来提供的，它是通过在类对象里加入&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;vtbl&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;虚函数表来实现的，这一点相信大部分程序员都很清楚，不过怎么做到多态功能估计了解的不多了。要详细了解，还请阅读《&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Inside the C++ Object Model&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;》一书，下面简单介绍一下原理。&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;一般编译都会给包含有&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;virtual function&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的类头部（有的编译也会放到底部，比如&lt;/span&gt; &lt;span lang=EN-US&gt;VC&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）增加一个成员&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;vptr&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;指针，指向一个&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;vtbl &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;虚函数表，为定长数组，大小是所有带&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;virtual&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的函数数目再加&lt;/span&gt; &lt;span lang=EN-US&gt;1&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。虚函数指针从&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;vtbl[1]&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;开始，按照定义顺序，指向特定的函数实现。如果子类定义了父类中带&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;virtual &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的函数，则&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;vtbl &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;相应的指针指向子类的函数实现，否则就指向父类的实现。另外再说明一点，其中&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;vtbl[0]&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;是有别的用途，用来存放类型信息，做&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;dynamic_cast&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;用途。&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;仍以上面的例子为例，如下的代码编译器是如何处理：&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;A *p = new D();&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;// up-cast&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;p-&amp;gt;vfunc1();&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;// &lt;/span&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'"&gt;编译器会转化为如下代码&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;(*(p-&amp;gt;vptr))[n](p); // n &lt;/span&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'"&gt;为编译期确定的固定数，即相应&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;virtual function&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 121.5pt; mso-char-indent-count: 13.5"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;// &lt;/span&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'"&gt;所在位置&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;需要牢记一点，总是让&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;base class&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;拥有&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;virtual destructor&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。因为当如下操作时&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;delete p; &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;如果&lt;/span&gt; &lt;span lang=EN-US&gt;A &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;和&lt;/span&gt; &lt;span lang=EN-US&gt;B &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的析构函数不是虚函数，则不会调用子类&lt;/span&gt; &lt;span lang=EN-US&gt;D &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;dtor&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，就有可能造成内存泄露或者资源没有释放等严重问题。如果给&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;base class &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;加了&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;virtual dtor&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，由于有多态的特性，就会自动调用&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;subclass&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;dtor&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，接下来就会上面的介绍，依次调用各个&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;base class&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;dtor&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，因而就没有问题了。&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 'Arial Black'; mso-fareast-font-family: 黑体"&gt;C++ template&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;和 &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 'Arial Black'; mso-fareast-font-family: 黑体"&gt;STL containers&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;C++ template&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;即模板技术是实现泛型编程技术的，能够使得写一份代码可以应用到类似用途的不同地方。模板技术其实原理比较简单，但是使用还是比较复杂的，看看&lt;/span&gt; &lt;span lang=EN-US&gt;STL &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;源码就知道了，如果还不相信，再看看&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Boost&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;代码好了，会把你搞得晕头转向。候捷老师把这个技术讲解得非常清楚易懂，还具体分析了&lt;/span&gt; &lt;span lang=EN-US&gt;STL &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;里各个大组件的运作原理，我这里就不讲述了，基本都是源码的剖析，请阅读候捷老师的《&lt;/span&gt; &lt;span lang=EN-US&gt;STL&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;源码剖析》一书。&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;在讲解&lt;/span&gt; &lt;span lang=EN-US&gt;STL&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;中用模板如何实现&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;function class&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;（实现函数功能的类，在&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;stl_functions.h&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）中，有这样一段代码&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;template &amp;lt;class _Operation&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;class binder1st&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;: public unary_function&amp;lt;typename _Operation::second_argument_type,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;typename _Operation::result_type&amp;gt; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;protected:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;_Operation op;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;typename _Operation::first_argument_type value;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;public:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;binder1st(const _Operation&amp;amp; __x,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;const typename _Operation::first_argument_type&amp;amp; __y)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;: op(__x), value(__y) {}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;typename _Operation::result_type&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;operator()(const typename _Operation::second_argument_type&amp;amp; __x) const {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;return op(value, __x);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;};&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;有人提出上面&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;_Operation op; &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;为什么不定义为引用，如&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;_Operation &amp;amp;op;&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;呢。我的想法如下，因为构造方法为&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;binder1st(const _Operation&amp;amp; __x, // &lt;/span&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'"&gt;这里为&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;const &lt;/span&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'"&gt;类型&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;const typename _Operation::first_argument_type&amp;amp; __y)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;传入的参数为&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;const&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类型，这时不应在本调用方法（这里是构造方法）之外使用引用或指针指向它，因为带&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;const T &amp;amp;t &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的参数一般情况都视为临时对象，很有可能是在方法调用的时候临时产生的，比如说自动转型产生的临时对象都是&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;const T &amp;amp; &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类型，它的生命周期都在此方法调用期间内，方法调用结束即被销毁，所以就不能在方法外部用引用或指针之类指向它了。举例来说，可能比较容易理解，比如大家常用的&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;string&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类，假如有一个方法和调用如下：&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;void func(const string &amp;amp;s); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;func("abcdfd"); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;这个时候就会出现自动转型行为，编译器会做如下处理&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;func(string("abcdfd")); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;即产生一个临时的&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;string&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对象，这个对象是以&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;const &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类型传入的。假如你的方法定义改成如下&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;void func(string &amp;amp;s); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;现在大部分编译器严格的处理都会报错，以前的&lt;/span&gt; &lt;span lang=EN-US&gt;VC6 &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;就不会，但是好像最新的&lt;/span&gt; &lt;span lang=EN-US&gt;VC2005 &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;也报错了。&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;这是其中一个原因，还有一个原因我认为是&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;_Operation&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类只是一个&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;function class&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，没有成员，所以做复制构造也不会有多大的开销，基本不会影响效率。再加模板和&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;inline&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;方法的处理，编译器经过优化，应该都不会产生临时对象了，所以也不必用引用了。不过我觉得最重要是上面第一个原因。&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;内存池和小对象分配器（&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 'Arial Black'; mso-fareast-font-family: 黑体"&gt;memory pool, small object allocator&lt;/span&gt; &lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;）&lt;span lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;候捷老师在内存池方面也有很丰富的研究经验，他基本将目前主流的内存池实作都剖析了一遍，介绍了它们各自的特点，以及如何与上层框架的配合。内存池是一个非常基础也非常关键的底层库，一般大型的框架自己都带有一个内存池库，比如&lt;/span&gt; &lt;span lang=EN-US&gt;STL&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;、&lt;/span&gt; &lt;span lang=EN-US&gt;MFC&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;等。即使在目前内存比较便宜的今天，内存资源也是最宝贵的系统资源之一，设计一个优秀的内存池对提高系统的效率和稳定性都非常有帮助，尤其是设计专门针对小内存对象（一般低于&lt;/span&gt; &lt;span lang=EN-US&gt;128&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;字节）的分配器非常重要，因为这样对象分配和释放非常频繁，只用简单的&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;malloc()&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;和&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;free()&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;来处理非常影响效率，不是一个优秀的设计。下面我简要介绍一下目前主流内存池设计的特点，以及我自己的想法，另外再加一个候捷老师没提到&lt;/span&gt; &lt;span lang=EN-US&gt;ACE&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;中的内存池管理器的设计特点。&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 'Arial Black'; mso-fareast-font-family: 黑体"&gt;SGI STL&lt;/span&gt; &lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;中的内存分配器（&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 'Arial Black'; mso-fareast-font-family: 黑体"&gt;allocator&lt;/span&gt; &lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;）&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;SGI STL &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;allocator&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;应该是目前设计最优秀的&lt;/span&gt; &lt;span lang=EN-US&gt;C++ &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;内存分配器之一了，它的运作原理候捷老师在《&lt;/span&gt; &lt;span lang=EN-US&gt;STL&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;源码剖析》里讲解得非常清楚。基本思路是设计一个&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;free_list[16]&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;数组，负责管理从&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;8 bytes&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;到&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;128 bytes&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;不同大小的内存块（&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;chunk&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），每一个内存块都由连续的固定大小（&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;fixed size block&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）的很多&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;chunk &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;组成，并用指针链表串接起来。比如说&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;free_list[3]-&amp;gt;start_notuse-&amp;gt;next_notuse-&amp;gt;next_notuse-&amp;gt;...-&amp;gt;end_notuse;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;当用户要获取此大小的内存时，就在&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;free_list&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的链表找一个最近的&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;free chunk&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;回传给用户，同时将此&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;chunk &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;从&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;free_list&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;里删除，即把此&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;chunk&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;前后&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;chunk&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;指针链结起来。用户使用完释放的时候，则把此&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;chunk&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;放回到&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;free_list&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;中，应该是放到最前面的&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;start_free&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的位置。这样经过若干次&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;allocator&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;和&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;deallocator&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;后，&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;free_list&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;中的链表可能并不像初始的时候那么是&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;chunk&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;按内存分布位置依次链接的。假如&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;free_list&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;中不够时，&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;allocator&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;会自动再分配一块新的较大的内存区块来加入到&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;free_list&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;链表中。&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;可以自动管理多种不同大小内存块并可以自动增长的内存池，这是&lt;/span&gt; &lt;span lang=EN-US&gt;SGI STL&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;分配器设计的特点。&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 'Arial Black'; mso-fareast-font-family: 黑体"&gt;Loki&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;中的小对象分配器（&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 'Arial Black'; mso-fareast-font-family: 黑体"&gt;small object allocator&lt;/span&gt; &lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;）&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Loki &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的分配器与&lt;/span&gt; &lt;span lang=EN-US&gt;SGI STL &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的原理类似，不同之处是它管理&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;free_list &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;不是固定大小的数组，而是用一个&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;vector&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;来实现，因此可以用户指定&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;fixed size block&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的大小，不像&lt;/span&gt; &lt;span lang=EN-US&gt;SGI STL &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;是固定最大&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;128 bytes&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的。另外它管理&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;free chunks&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的方式也不太一样，&lt;/span&gt; &lt;span lang=EN-US&gt;Loki &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;是由一列记录了&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;free block&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;位置等信息的&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Chunk&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类的链表来维护的，&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;free blocks&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;则是分布在另外一个连续的大内存区间中。而且&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;free Chunks &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;也可以根据使用情况自动增长和减少合适的数目，避免内存分配得过多或者过少。&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Loki &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的分配器使用也不太一样，可以直接调用，如下&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;SmallObjAllocator myAlloc(2048, 256); // &lt;/span&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'"&gt;参数&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;1&lt;/span&gt; &lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'"&gt;为&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;chunk size&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&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;&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;&amp;nbsp; &lt;/span&gt;// &lt;/span&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'"&gt;参数&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;2&lt;/span&gt; &lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'"&gt;为&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;max fixed size block size&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;// &lt;/span&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'"&gt;可以用于小于&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;256 bytes&lt;/span&gt; &lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'"&gt;的各种大小内存的分配&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;void *p1 = (void*)myAlloc.Allocate(20); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;void *p2 = (void*)myAlloc.Allocate(100); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;void *p3 = (void*)myAlloc.Allocate(256); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;void *p4 = (void*)myAlloc.Allocate(300); // &lt;/span&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'"&gt;大于&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;256 &lt;/span&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'"&gt;将转交给系统处理&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;myAlloc.Deallocate(p1,20); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;myAlloc.Deallocate(p2,100); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;myAlloc.Deallocate(p3,256); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;myAlloc.Deallocate(p4,300); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 'Arial Black'; mso-fareast-font-family: 黑体"&gt;MFC&lt;/span&gt; &lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;的&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 'Arial Black'; mso-fareast-font-family: 黑体"&gt;CPlex&lt;/span&gt; &lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;和&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 'Arial Black'; mso-fareast-font-family: 黑体"&gt;CPtrList&lt;/span&gt; &lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;（扮演 &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 'Arial Black'; mso-fareast-font-family: 黑体"&gt;memory pool&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;角色）&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="COLOR: navy; FONT-FAMILY: 'Courier New'"&gt;CPlex&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;任务比较简单，只负责管理一大块&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;memory&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;并串接起来，用户每次获取都返回一大块。分割由使用者（如&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Collection classes&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;CFixedAlloc&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）将这一大块切割为一个个小的内存块。&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="COLOR: navy; FONT-FAMILY: 'Courier New'"&gt;CPtrList&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;则负责管理这些切割后的小内存块，这一点有点类似&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Loki&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;中的&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;free Chunks&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，不过要简单多了。&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;MFC&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;还有一个类叫&lt;/span&gt; &lt;span lang=EN-US style="COLOR: navy; FONT-FAMILY: 'Courier New'"&gt;CFixedAlloc&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，它是提供给应用类来分配固定大小（根据具体应用类的大小）的内存分配器。通过在应用类中定义&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;DECLARE_FIXED_ALLOC(Foo)&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;和&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;IMPLEMENT_FIXED_ALLOC(Foo)&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;两个宏来实现。&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 'Arial Black'; mso-fareast-font-family: 黑体"&gt;Boost&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;的 &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 'Arial Black'; mso-fareast-font-family: 黑体"&gt;object_pool&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Boost&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;中的&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;object_pool&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;也是一个可以根据用户具体应用类的大小来分配内存块的，也是通过维护一个&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;free nodes&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的链表来管理的。可以自动增加&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;nodes&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;块，初始是&lt;/span&gt; &lt;span lang=EN-US&gt;32 &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;个&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;nodes&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，每次增加都以两倍数向&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;system heap&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;要内存块。&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;object_pool&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;管理的内存块需要在其对象销毁的时候才返还给&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;system heap&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 'Arial Black'; mso-fareast-font-family: 黑体"&gt;ACE&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;中的 &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 'Arial Black'; mso-fareast-font-family: 黑体"&gt;ACE_Cached_Allocator&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;和 &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 'Arial Black'; mso-fareast-font-family: 黑体"&gt;ACE_Free_List&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ACE &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;框架中也有一个可以维护固定大小的内存块的分配器，原理与上面讲的内存池都差不多。它是通过在&lt;/span&gt; &lt;span lang=EN-US style="COLOR: navy; FONT-FAMILY: 'Courier New'"&gt;ACE_Cached_Allocator&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;中定义个&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Free_list&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;链表来管理一个连续的大内存块的，里面包含很多小的固定大小的未使用的区块（&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;free chunk&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;），同时还使用&lt;/span&gt; &lt;span lang=EN-US style="COLOR: navy; FONT-FAMILY: 'Courier New'"&gt;ACE_unbounded_Set&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;维护一个已使用的&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;chuncks&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，管理方式与上面讲的内存池类似。也可以指定&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;chunks&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的数目，也可以自动增长，定义大致如下所示：&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;template&amp;lt;class T&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;class ACE_Cached_Allocator : public ACE_New_Allocator&amp;lt;T&amp;gt; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;public:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;// Create a cached memory pool with @a n_chunks chunks&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;// each with sizeof (TYPE) size.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ACE_Cached_Allocator(SIZET n_chunks = ACE_DEFAULT_INIT_CHUNKS);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;T* allocate(); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;void deallocate(T* p); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;private:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;// List of memory that we have allocated.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Fast_Unbounded_Set&amp;lt;char *&amp;gt; _allocated_chunks;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;// Maintain a cached memory free list.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ACE_Cached_Free_List&amp;lt;ACE_Cached_Mem_Pool_Node&amp;lt;T&amp;gt; &amp;gt; _free_list;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;};&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;设计模式&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;最后一个主题重点讲讲设计模式，设计模式现在已经应用很广泛了，可以说是无处不在。设计模式现在对程序员是非常的重要，甚至到了不懂设计模式就不算真正的程序员一样。不过设计模式却又是非常高阶的理论，需要有多年的编程经验才能真正领悟，所以学习起来非常头痛。因为它道理非常简单，但是却非常抽象，候捷老师通过一大堆实际案例给我们逐个讲述了几个常用的模式的区别和用法。设计模式最经典最权威当属著名的有字天书&lt;/span&gt; &lt;span lang=EN-US&gt;GoF&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的《&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Design Patterns&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;》了，我结合自己学习和实践的体会介绍一下几个模式。&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;结构型模式之 &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 'Arial Black'; mso-fareast-font-family: 黑体"&gt;Composite&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;（合成模式）&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;GoF&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的定义：&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 'Courier New'"&gt;Compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compositions of objects.&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;翻译为中文大致意思是：将对象&lt;/span&gt; &lt;span lang=EN-US&gt;(s)&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;组成为树状结构，用以表示“局部&lt;/span&gt; &lt;span lang=EN-US&gt;-&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;整体”的层次体系，使得让&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;clients &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;可以以一致的方式对待“单个对象”和“合成对象”。&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;比较典型的例子就是文件系统中“文件”和“目录”的关系，还有&lt;/span&gt; &lt;span lang=EN-US&gt;Windows &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;窗口系统也是，在一个窗口中还可以开另一个窗口，多个窗口组合成的窗口还可以当作一个窗口放入另一个窗口中，比如在&lt;/span&gt; &lt;span lang=EN-US&gt;Word &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;中打开多个文档就是这种情况。&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Composite&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;模式的好处就是使得&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;clients&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;调用简单，可以用一致的接口处理单个对象或者多个单一对象组合成的对象。&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;实例：&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Java swing library&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;中&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Component&lt;/span&gt; &lt;span lang=EN-US&gt;, &lt;/span&gt;&lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Label&lt;/span&gt; &lt;span lang=EN-US&gt;, &lt;/span&gt;&lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Container&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;就是&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Composite&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;模式的应用。其中&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Label&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;和&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Container&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;都继承自&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Component&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，但是&lt;/span&gt; &lt;span lang=EN-US&gt;C&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;ontainer&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;中只是一个存放&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Component&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的数组，所以&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Container&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;中就可以放很多&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Component&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，比如&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;ScrollPane&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;就是继承自&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Container&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，它可以放&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Label&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，还有&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;List&lt;/span&gt; &lt;span lang=EN-US&gt;, &lt;/span&gt;&lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Scrollbar&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;等等，甚至还可以放一个&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;ScrollPane&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，所以就达到了&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Composite&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;模式的效果，简化了&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;client&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的使用。&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;结构型模式之 &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 'Arial Black'; mso-fareast-font-family: 黑体"&gt;Decorator&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;（装饰模式）&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;GoF&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的定义：&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 'Courier New'"&gt;Attach additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing for extending functionality.&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;翻译为中文大致的意思是：以动态的方式给一个对象添加一些额外的职责，使得不必进行&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;subclassing&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;就能扩展功能。&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="COLOR: navy; FONT-FAMILY: 'Courier New'"&gt;Decorator&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;模式与&lt;/span&gt; &lt;span lang=EN-US style="COLOR: navy; FONT-FAMILY: 'Courier New'"&gt;Composite&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;模式的区别就是它只内含一个&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;component object field&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，而&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Composite&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;则内含一个&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;collection of component field&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Decorator&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;负责将一个对象“装饰”起来，做一些“改造或者扩展”，提供额外的功能，它只针对一个&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;class&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。而&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Composite &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;是一组“类似”的对象及其容纳它们的容器一视同仁，使得&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;client&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;更简单地处理单个对象和一组对象。它们目的不一样。&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;实例：&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Java IO library&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;中&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;BufferedReader&lt;/span&gt; &lt;span lang=EN-US&gt;, &lt;/span&gt;&lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Reader&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;之间使用的就是&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Decorator&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;模式，其中&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;BufferedReader&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;继承自&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Reader&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，同时它内部含有一个&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Reader&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;引用，它是通过另一个&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Reader&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对象构造而来，因此就为&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Reader&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;提供更多的功能，如带缓冲的&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Reader&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。使用非常简单，只需要如此定义：&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 22.5pt; mso-char-indent-count: 2.5"&gt;&lt;span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'"&gt;Reader in = new BufferedReader(new FileReader("test.txt")); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;就为文件读取增加了带缓冲的&lt;/span&gt; &lt;span lang=EN-US&gt;IO&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;功能，非常方便。还可以多个&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Decorator&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的类组合使用，可以提供更强大的功能，多使用一下&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Java IO library&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;就会体会到。&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;行为模式之 &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 'Arial Black'; mso-fareast-font-family: 黑体"&gt;Observer&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;（观察者模式）&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;GoF&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的定义：&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 'Courier New'"&gt;Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;翻译为中文大致意思是：在&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;objects&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;之间定义一个“一对多”的依赖关系，使得当这个&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;object&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;改变状态时，所有依赖它的&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;objects&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;都能获得通知并自动更新。&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Observer&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;是用于做“通知”用途的，就像“&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;publish-subscribe&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;”，它能够做到注册需要通知的对象，并自动通知它们来更新，它们都是被动地被通知，而不是主动观察。&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;实例：&lt;/span&gt; &lt;span lang=EN-US&gt;MFC &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;里&lt;/span&gt; &lt;span lang=EN-US style="COLOR: navy; FONT-FAMILY: 'Courier New'"&gt;CView&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;和&lt;/span&gt; &lt;span lang=EN-US style="COLOR: navy; FONT-FAMILY: 'Courier New'"&gt;CDocument&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;之间就是一个观察者模式，&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;CView&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;是&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Observer&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;即观察者，&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;CDocument&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;是&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Observable&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;即被观察者，当&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;CDocument&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;修改后会自动通知所有的&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;CView&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对象来自动更新它们显示的内容，这一点可以用&lt;/span&gt; &lt;span lang=EN-US&gt;Word &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;很容易试出来。还有最新的&lt;/span&gt; &lt;span lang=EN-US&gt;Windows&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;图形界面框架&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;WinForm&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;中的窗口之间消息传递等用的也是&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Observer&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;模式，一个窗口发生改变时会自动通知所有与它有关系的窗口，来自动更新信息等，这一点&lt;/span&gt; &lt;span lang=EN-US&gt;Jeffrey Richter &lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;可以作证&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: Wingdings; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;&lt;span style="mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;J&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;行为模式之 &lt;/span&gt;&lt;span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 'Arial Black'; mso-fareast-font-family: 黑体"&gt;Template Method&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;（模板方法）&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang=EN-US&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;GoF&lt;/span&gt; &lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的定义：&lt;/span&gt; &lt;span lang=EN-US style="FONT-SIZE: 9pt; COLOR: navy; FONT-FAMILY: 'Courier New'"&gt;Define the skeleton of an algorithm in an operation, deferring somesteps to subclasses. Template Method lets subclasses redefine certain steps ofan algorithm without changing the algorithm's structure.&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;翻译为中文大致意思是：定义一个算法的骨干，延缓其中某些步骤以便在&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;subclasses&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;中定义它们。&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;Template Method&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;使得&lt;/span&gt; &lt;span lang=EN-US style="FONT-FAMILY: 'Courier New'"&gt;subclasses&lt;/span&gt; &lt;span lang=EN-US&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;在不改变算法的
