ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>四虎影院在线播放,中文国产成人精品久久一,亚洲男女毛片无遮挡http://www.aygfsteel.com/Yipak/category/26293.html成功在于你是否努åŠ?希望在于你是否相信自å·? zh-cnSun, 30 Sep 2007 06:30:24 GMTSun, 30 Sep 2007 06:30:24 GMT60内容½Ž¡ç†¾pȝ»Ÿ(CMS)的设计和选型http://www.aygfsteel.com/Yipak/articles/149849.htmlæ­È¥žæ­È¥žSun, 30 Sep 2007 04:33:00 GMThttp://www.aygfsteel.com/Yipak/articles/149849.htmlhttp://www.aygfsteel.com/Yipak/comments/149849.htmlhttp://www.aygfsteel.com/Yipak/articles/149849.html#Feedback0http://www.aygfsteel.com/Yipak/comments/commentRss/149849.htmlhttp://www.aygfsteel.com/Yipak/services/trackbacks/149849.html内容½Ž¡ç†¾pȝ»Ÿ(CMS)的设计和选型


 

内容摘要åQ?br />

内容½Ž¡ç†¾pȝ»Ÿæ¦‚è¿°


内容½Ž¡ç†¾pȝ»Ÿæ˜¯ä¸€ä¸ªå¾ˆæ³›çš„æ¦‚念åQšä»Žå•†ä¸šé—¨æˆ·¾|‘站的新é—ȝ³»¾lŸåˆ°ä¸ªähçš„Weblog都可以称作发布系¾lŸã€?br />
  • 框架型:本èín不包含ä“Q何应用实玎ͼŒåªæ˜¯æä¾›äº†åº•层框æžÓž¼Œå…·ä½“应用需要一定的二次开发,比如CocoonåQŒVignetteåQ?
  • 应用型:本èín是一个面向具体类型的应用实现åQŒå·²¾låŒ…含了新闻/评论½Ž¡ç†åQŒæŠ•¼œ¨ï¼Œè®ºå›åQŒWIKI½{‰ä¸€äº›å­¾pȝ»Ÿã€‚比如:postNukexoops½{‰ï¼›

但无论如何,在发布系¾lŸé€‰åž‹ä¹‹å‰åQŒé¦–先了解自å·Þqš„实际需求是最重要的:æƒÏx ¹æ®çŽ°æˆç³»¾lŸå°†è‡ªå·±çš„需求硬往上照搬是非常不可取的。访问量åQŒæƒé™æŽ§åˆ¶å’Œå„种功能需求。每个模块和功能自己都比较清æ™îC¸€ç‚¹ä»¥åŽï¼Œå†åŽ»¾|‘上找找¾cÖM¼¼çš„实玎ͼšä½ ä¼šå‘现其实每个环节到目前上都有比较成熟的实çŽîCº†åQŒè€Œä¸”˜q˜åœ¨ä¸æ–­å®Œå–„和发展中åQŒå¦‚果没有:你的需求太ç‰ÒŽ®ŠåQŒæˆ–者可以尝试分解成更小的系¾lŸç»„合实现ã€?br />

内容½Ž¡ç†¾pȝ»Ÿè¢«åˆ†¼›ÀLˆä»¥ä¸‹å‡ ä¸ªå±‚面åQšå„个层面优先考虑的需求不å?br />

  1. 后台业务子系¾lŸç®¡ç†ï¼ˆ½Ž¡ç†ä¼˜å…ˆåQšå†…容管理)åQšæ–°é—Õd½•入系¾lŸï¼ŒBBS论坛子系¾lŸï¼Œå…¨æ–‡‹‚€ç´¢å­¾pȝ»Ÿ½{‰ï¼Œé’ˆå¯¹ä¸åŒ¾pȝ»Ÿçš„æ–¹ä¾¿ç®¡ç†è€…的内容录入åQšæ‰€è§å³æ‰€å¾—çš„¾~–辑½Ž¡ç†ç•Œé¢½{‰ï¼Œæ¸…晰的业务逻辑åQšå„¿Uå­¾pȝ»Ÿçš„æƒé™æŽ§åˆ¶æœºåˆ¶ç­‰åQ?
  2. Portal¾pȝ»ŸåQˆè¡¨çŽîC¼˜å…ˆï¼šæ¨¡æ¿½Ž¡ç†åQ‰ï¼šå¤§éƒ¨åˆ†æœ€¾lˆçš„输出™åµé¢åQšç½‘站首™åµï¼Œå­é¢‘é?专题™åµï¼Œæ–°é—»è¯¦æƒ…™åµä¸€èˆ¬å°±æ˜¯å„¿UåŽå°å­¾pȝ»Ÿæ¨¡å—的各¿Uç»„合,˜q™ç§å‘布¾l„åˆé€»è¾‘æ˜¯éžå¸æ€¸°å¯Œçš„åQŒPortal¾pȝ»Ÿž®±æ˜¯è´Ÿè´£ä»¥ä¸Š˜q™äº›åŽå°å­ç³»¾lŸçš„¾l„合表现½Ž¡ç†åQ?
  3. 前台发布åQˆæ•ˆçŽ‡ä¼˜å…ˆï¼šå‘å¸ƒ½Ž¡ç†åQ‰ï¼šé¢å‘最¾lˆç”¨æˆïLš„¾~“存发布åQŒå’Œæœçƒ¦å¼•擎spiderçš„URL设计½{‰â€¦â€?
内容½Ž¡ç†å’Œè¡¨çŽ°çš„åˆ†ç¦»åQšå¾ˆå¤šæˆå¥—çš„CMS¾pȝ»Ÿæ²¡æœ‰æŠŠåŽå°å„¿Uå­¾pȝ»Ÿå’ŒPortal分离开设计åQŒä»¥è‡³äºŽåœ¨Portal层的模板表现½Ž¡ç†å’Œæ–°é—Õd­¾pȝ»Ÿçš„å†…å®¹ç®¡ç†é€»è¾‘æ··åˆåœ¨ä¸€èµøP¼Œç”šè‡³å’ŒBBS½{‰å­¾pȝ»Ÿçš„管理都耦合的非帔R«˜åQŒæ•´ä¸ªç³»¾lŸä¼šæ˜‘Ö¾—非常庞杂。而且˜q™æ ·çš„ç³»¾lŸå„个子¾pȝ»Ÿæ†ç»‘的比较死åQŒå¦‚果后台的模块很难改变。但是如果把后台各种子系¾lŸå†…容管理逻辑和前台的表现/发布分离后,Portal和后台各个子¾pȝ»Ÿä¹‹é—´åªæ˜¯æ•°æ®ä¼ é€’的关系åQšPortal只决定后台各个子¾pȝ»Ÿæ•°æ®çš„取舍和表现åQŒè€ŒåŽå°çš„各个子系¾lŸä¹Ÿéƒ½éžå¸¸å®¹æ˜“插拔ã€?br />
内容½Ž¡ç†å’Œæ•°æ®åˆ†å‘的分离åQšéœ€è¦è¦Portal¾pȝ»Ÿè®¾è®¡çš„æ—¶å€™æ³¨æ„?a >可缓存性(Cache FriendlyåQ‰æ€§è®¾è®?/a>åQšCMS后台½Ž¡ç†å’Œå‘布机åˆÓž¼Œæœ¬èín不要˜q‡å¤šè€ƒè™‘“效率”问题,只要最¾lˆé¡µé¢è¾“凸™®¾è®¡çš„æ¯”较CacheableåQŒæ•ˆçŽ‡é—®é¢˜å¯é€šè¿‡æ›´å‰ç«¯ä¸“é—¨çš„¾~“存服务器解冟ë€?br />
此外åQŒå°±æ˜¯é™¤äº†é¢å‘最¾lˆæµè§ˆå™¨ç”¨æˆ·å¤–,˜q˜è¦æ³¨æ„é¢å‘搜烦引擎友好(Search engine Friendly)çš„URL设计åQšé€šè¿‡URL REWRITE转向或基于PATH_INFO的参数解析ä‹É得动态网™åµåœ¨é“¾æŽ¥åQˆURIåQ‰åŞ式上更像静态的目录¾l“æž„åQŒæ–¹ä¾¿ç½‘站内容被搜烦引擎收录åQ?br />
---------------    ---------------     ---------------                    
|æ–°é—»½Ž¡ç†å­ç³»¾lŸ| | BBS论坛子系¾lŸ| | 商城子系¾l? |
--------------- --------------- ---------------
| \ / | \ / �
| ----------|--- \ / å®? <== 业务子系¾lŸï¼ˆé›¶äšg生äñ”åQ?br /> | / | \ \ / ½Ž?
--------------- | --------------- �
|专题制作子系¾lŸ| | |全文‹‚€ç´¢å­¾pȝ»Ÿ|
--------------- | ---------------
\ | /
-------------------------|---------------------------------------------
\ | / �
--------------- é? <== Portal¾pȝ»ŸåQˆäñ”品组装)
| Portal ¾pȝ»Ÿ | ½Ž?
--------------- �
|
-------------------------|---------------------------------------------
| �
| å? <== 发布¾pȝ»ŸåQˆåˆ†å‘代理)
--------------- �
|前台发布¾pȝ»Ÿ | å¸?
---------------
/ \
/ \
--------------- ---------------
| 用户‹¹è§ˆå™? | |Search Engine|
--------------- ---------------

˜q™é‡ŒåQŒæˆ‘把在内容发布¾pȝ»Ÿé€‰åž‹ä¸­æ‰¾åˆ°çš„一些资料æ€È»“如下åQ?

    内容½Ž¡ç†¾pȝ»Ÿçš„选型

    关键词:CMS Content Manage System

    CMS行业研究
    http://www.cmswatch.com/
    http://www.cmsreview.com/
    http://www.cmsinfo.org/

    CMS讨论邮äšg列表
    http://www.cms-list.org/

    商业软äšg和开源项目列表:
    http://directory.google.com/Top/Computers/Software/Internet/Site_Management/Content_Management/

    推荐åQšåŸºäºŽXML的发布框æž?br />http://cocoon.apache.org/

    具体实现复杂½E‹åº¦å¯èƒ½ä¼šæ ¹æ®éœ€æ±‚的不同而不同,但越是大型的¾pȝ»Ÿ­‘Šæ˜¯éœ€è¦åˆ†å·¥ï¼šž®†å†…容(数据åQ‰ï¼Œè¡¨çްåQˆæ¨¡æ¿ï¼‰å’Œåº”用逻辑åQˆç¨‹åºï¼‰ž®½å¯èƒ½åˆ†¼›Õd’Œå¯¹è¿™3 者的½Ž¡ç†ã€?br />

    Portal---门户¾pȝ»Ÿ
    Open source Projects:
    http://jportlet.sourceforge.net/
    Apache Software Foundation: Jakarta JetSpeed 1.3
    JetSpeed home page: http://jakarta.apache.org/jetspeed/site/index.html
    JetSpeed Portlet API: http://cvs.apache.org/viewcvs/jakarta-jetspeed/proposals/portletAPI/
    http://www.liferay.com/home/index.jsp
    http://basicPortal.com/
    http://www.jahia.org/
    http://jporta.sourceforge.net/

    商业软äšgåQ?br />BEA WebLogic Portal - http://edocs.bea.com/wlp/docs81/javadoc/com/bea/Portal/model/Portlet.html
    IBM Websphere Portal - http://www.software.ibm.com/wsdd/zones/Portal/
    Oracle Portal Developer Kit - http://Portalstudio.oracle.com/

    其它:
    PSML - http://jakarta.apache.org/jetspeed/site/psml.html
    BEA: Web Logic Portal 4.0 http://www.bea.com/products/weblogic/Portal/index.shtml
    IBM: WebSphere Portal 2.1 http://www-4.ibm.com/software/webservers/Portal/
    iPlanet: iPlanet Portal Server 3.0 http://www.iplanet.com/products/iplanet_Portal/home_Portal.html
    Oracle: Oracle 9i Portal http://www.oracle.com/ip/deploy/ias/Portal/index.html
    SAP Portal: http://www.iviewstudio.com/
    Epicentric Portal: http://www.epicentric.com/solutions/products/efs/

    参考:
    WaferåQšJava开发框架研½I?/a>
    http://www.waferproject.org/index.html

    门户(Portal)¾pȝ»Ÿç›¸å…³å¼€å‘框æžÓž¼š
    http://udoo.51.net/mt/archives/000011.html

    òq¿å‘Š½Ž¡ç†¾pȝ»Ÿ

    关键词:ad server

    òq¿å‘оpȝ»Ÿå’Œå†…容的分离åQŒå¯ä»¥å¤§å¤§é™ä½Žç³»¾lŸä¹‹é—´çš„å…Œ™”度ã€?br /> 
    专业行业研究¾|‘ç«™åQ?br />http://adres.internet.com/

    相关厂商和开源项目:
    http://directory.google.com/Top/Computers/Programming/Languages/PHP/Scripts/Ad_Management/?il=1
    http://directory.google.com/Top/Computers/Software/Internet/Servers/Advertising/?tc=1
    http://www.jspin.com/home/apps/admanage?cob=winedit
    http://www.scriptdex.com/dex/php_ad_management.shtml

    推荐åQ?br />http://www.phpadsnew.com/ 功能性比较强
    http://oasis.sourceforge.net/ 免费 åŸÞZºŽæ—¥å¿—记录和定期导入MYSQL¾lŸè®¡åQŒå¯ä»¥è´Ÿè½?0万请æ±?每小æ—?以上

    如果看重òq¿å‘Šçš„第3方特性,可以选择½W¬ä¸‰æ–ÒŽœåŠ¡ï¼š
    http://www.doubleclick.net/
    http://www.allyes.com/

    论坛/½C‘ÖŒº¾pȝ»Ÿ

    关键词: BBS FORUM

    论坛软äšg介绍åQ?br />http://directory.google.com/Top/Computers/Internet/Web_Design_and_Development/Message_Boards/

    推荐åQ?br />http://www.phpbb.com/ PHP + MySQL open source
    http://www.vbulletin.com/order/ PHP + MySQL  有付费的商业支持85åQ?60$

    http://www.jivesoftware.com/products/pricing.jsp 商业论坛¾pȝ»ŸåQ?000$åQ?500$ 有知识库扩展应用
    http://yazd.yasna.com/features.jsp åŸÞZºŽ Java

    所见即所得(WYSIWYGåQ‰ç¼–辑器

    在内容的录入½Ž¡ç†æ–šw¢åQŒæ‰€è§å³æ‰€å¾—是比较重要的,˜q™æ ·å¯ä»¥å¤§å¤§½Ž€åŒ–对¾pȝ»Ÿä¸­å¸ƒå±€æŽ’版的需求ã€?br />åŸÞZºŽ‹¹è§ˆå™¨çš„WYSIWYGåQˆæ‰€è§å³æ‰€å¾—)¾~–辑器是CMS设计中,¾~–辑工具的主要考虑斚w¢ã€‚目前主要是通过JAVASCRIPT调用IE或其他浏览器的内¾|®æ–¹æ³•实现。其中基于IE5.5‹¹è§ˆå™¨çš„实现最为简‹zã€‚这里有一个完整的例子åQ?br />Building a WYSIWYG HTML Editor Part 1/2
    Building a WYSIWYG HTML Editor Part 2/2

    主要功能åQ?br />
    • 能够通过JAVASCRIPT实现的基本功能:加粗åQŒæ–œä½“å­—åQŒå±…中,æ·ÕdŠ é“¾æŽ¥åQŒæ·»åŠ å›¾ç‰‡ï¼Œæ¨¡å¼åˆ‡æ¢åQšHTML和文本模式的切换åQ?
    • Word垃圾代码˜q‡æ×o
    • 囄¡‰‡ä¸Šè²æŽ¥å£åQšå›¾ç‰‡ä¸Šè½½æœ€å¥½é€šè¿‡å…¶ä»–独立模块实现ã€?
    选型指标åQ?br />
    • 不依赖服务器端代码:只通过JAVASCRIPT或客æˆïL«¯æŽ§äšg实现代码åQŒå¯ä»¥ä¿è¯ä»¥åŽç³»¾lŸè¿¿UÈš„æ–¹ä¾¿ã€?
    • WORD垃圾代码˜q‡æ×o
    可视化编辑器大全åQ?br />http://www.bris.ac.uk/is/projects/cms/ttw/ttw.html

    推荐åQ?br />http://www.aine.be/aynhtml/

    囄¡‰‡/æ–‡äšg上传¾l„徏

    囄¡‰‡å’Œæ–‡ä»¶ç­‰éžç»“构化数据˜q˜æ˜¯åˆ†åˆ«ä½¿ç”¨å¦å¤–的服务解å†Ïx¯”较好。这样可以大大简化CMS本èín的复杂程度ã€?br />
    推荐åQ?br />æ–‡äšg上传åQ?br />Apache Commons™å¹ç›®
    http://jakarta.apache.org/commons/

    ImageJåQšå›¾ç‰‡å¤„理羃略图生成和水印等
    http://rsb.info.nih.gov/ij/

    关于Blog¾pȝ»Ÿçš„选型åQŒç›®å‰ä¸»‹¹çš„åŸÞZºŽPHP的包括:
    · Nucleus 3.0 http://www.nucleuscms.org/
    · pmachine 2.3 http://www.pmachine.com/
    · b2evolution 0.9.0.3 http://www.b2evolution.net/
    · Serendipity 0.6 http://www.s9y.org/
    · WordPress 1.2 http://www.wordpress.org/
    · bBlog 0.7.3 http://www.bblog.com/
    · pLog 0.3.1 http://www.plogworld.org/
    · Simplog .9 http://www.simplog.org/
    · Textpattern 1.18a http://www.textpattern.com/


    原帖: http://www.chedong.com/tech/cms.html


    æ­È¥ž 2007-09-30 12:33 发表评论
    ]]>
    åŸÞZºŽLucene/XML的站内全文检索解å†Ïx–¹æ¡ˆï¼šWebLucenehttp://www.aygfsteel.com/Yipak/articles/149846.htmlæ­È¥žæ­È¥žSun, 30 Sep 2007 04:29:00 GMThttp://www.aygfsteel.com/Yipak/articles/149846.htmlhttp://www.aygfsteel.com/Yipak/comments/149846.htmlhttp://www.aygfsteel.com/Yipak/articles/149846.html#Feedback0http://www.aygfsteel.com/Yipak/comments/commentRss/149846.htmlhttp://www.aygfsteel.com/Yipak/services/trackbacks/149846.html

    内容摘要åQ?br />为Lucene做一个通用XML接口一直是我最大的心愿åQšæ›´æ–¹ä¾¿çš„åœ¨WEB应用中嵌入全文检索功èƒ?/p>

    • 提供了XML的数据输入接口:适合ž®†åŽŸæœ‰åŸºäºŽå„¿Uæ•°æ®åº“的数据源导入到全文烦引中åQŒä¿è¯äº†æ•°æ®æºçš„òq›_°æ— å…³æ€§ï¼›
    • 通过了基于XML的搜索结果输出:方便了通过XSLT˜q›è¡Œå‰å°çš„结果显½Cºï¼›
    								
    MySQL \ / JSP
    Oracle - DB - ==> XML ==> (Lucene Index) ==> XML - ASP
    MSSQL / - PHP
    MS Word / \ / XHTML
    PDF / =XSLT=> - TEXT
    \ XML
    \_________WebLucene__________/
    使用˜q‡ç¨‹å¦‚下åQ?br />
    1. ž®†æ•°æ®ç”¨è„šæœ¬å¯¼å‡ºæˆXML格式åQ?
    2. ž®†XML数据源导入LUCENE索引åQ?
    3. 从WEB界面得到XML¾l“果输出åQŒåƈ通过XSLT生成HTML™åµé¢

    站内全文‹‚€ç´¢çš„必要æ€?/h2>
    虽然大型搜烦引擎的功能已¾lè¶Šæ¥è¶Šå¼ºå¤§äº†ï¼Œå¾ˆå¤šç«™ç‚¹éƒ½ä‹É用了Google的站内检ç´?/a>site:domain.com代替了自å·Þqš„站内数据库“全文”检索ã€?但依靠GOOGLE˜q™æ ·çš„大型搜索引擎做站内‹‚€ç´¢ä¼šæœ‰ä»¥ä¸‹å¼Šç«¯ï¼š
    • 数量有限åQšæœç´¢å¼•æ“ŽåÆˆä¸ä¼šæ·±åº¦éåŽ†ä¸€ä¸ªç½‘ç«™ï¼Œè€Œå°†¾|‘站所有的内容都烦引进去,比如Googlež®±å–œ‹Æ¢é™æ€ç½‘™åµï¼Œè€Œä¸”是最新更新的åQŒè€Œä¸å–œæ¬¢å¸?的动态网™åµï¼ŒGoogle甚至会定期将¾~ºå°‘入口的网站内定w€æ¸æŠ›å¼ƒåQ?
    • 更新慢:搜烦引擎针对站点的更新频率也是有一定周期的åQŒå¾ˆå¤šå†…定wœ€è¦ä¸€å®šæ—¶é—´åŽæ‰èƒ½˜q›å…¥GOOGLE的烦引:目前Google Dance的周期是21天左叻I¼›
    • 内容不精¼‹®ï¼šæœçƒ¦å¼•擎需要通过™åµé¢å†…å®¹æå–æŠ€æœ¯å°†å¯ÆDˆªæ¡ï¼Œ™åµå¤´™åµå°¾½{‰å†…容过滤掉åQŒåè€Œä¸å¦‚直接从后台数据库提取数据来得直接,˜q™ç§æ‘˜è¦å’ŒæŽ’重机制是很难实现的;
    • 无法控制输出åQšä¹Ÿè®¸æœ‰æ›´å¤šçš„输出需求,按时间排序,按ä­hæ û|¼ŒæŒ‰ç‚¹å‡»é‡åQŒæŒ‰¾cȝ›®˜q‡æ×o½{?

    ¾pȝ»Ÿçš„æ­å»?/h2>下蝲åQ?br />http://sourceforge.net/projects/weblucene/

    XML数据源的导入åQ?br />
    只要数据源可以导出成3层的XML¾l“æž„åQŒå°±éƒ½å¯ä»¥ç”¨IndexRunner˜q™ä¸ªå‘½ä×o行工具导入:

    比如从数据库导出åQšnews_dump.xml
    <?xml version="1.0" encoding="GB2312"?>
    <Table>
        <Record>
            <Title>标题</Title>
            <Author>作�lt;/Author>
            <Content>内容</Content>
            <PubTime>2003-06-29</PubTime>      
        </Record>
        <Record>
            <Title>My Title</Title>
            <Author>chedong</Author>
            <Content>abc</Content>
            <PubTime>2003-06-30</PubTime>
        </Record>
        ...
    </Table>

    IndexRunner -i news_dump.xml -o c:\index -t Title,Content -n Author
    -i news_dump.xml:  以news_dump.xml为数据源
    -o c:\index   索引库徏立在c:\index目录ä¸?br />索引建立Title Author Content PubTime˜q™å‡ ä¸ªå­—ŒDµå¤–åQŒæŒ‰ä»¥ä¸‹è§„则建立索引åQ?br />-t Title,Content 一个进行分词的全文索引TokenIndexåQšæ•°æ®æ˜¯Title Content˜q?个字ŒD?br />-n Author    一个不分词的烦引:NoTokenIndexåQšæ•°æ®æºæ˜¯Author˜q™ä¸ªå­—段ã€?br />
    对于RSS数据源:
    <?xml version="1.0"?>
    <rss version="0.92">
    <channel>
      <title>Amazon: Books Arts &amp; Photography</title>
      <link>http://www.lockergnome.com/</link>
      <description>Amazon RSS Feed</description>
      <lastBuildDate>Sun, 29 Jun 2003 01:05:01 GMT</lastBuildDate>
      <docs>http://www.lockergnome.com/</docs>
      <webMaster>amazonfeed@lockergnome.com (Lockergnome RSS Generator)</webMaster>
      <item>
        <title>The Artist's Way: A Spiritual Path to Higher Creativity - $11.17</title>
        <link>http://www.amazon.com/exec/obidos/ASIN/1585421464/lockergnomedigit/?ref=nosim&amp;dev-it=D34HUVGKB34YFX</link>
        <description>http://www.lockergnome.com/    </description>
      </item>
      ...
    </channel>

    IndexRunner -i http://www.example.com/rss.xml -o c:\index -t title,description -n link  -l  4
    -l 4 表示拿第4层节点作为字ŒD‰|˜ ž®„,

    IndexRunner˜q˜æä¾›äº†-a -m˜q™ä¸¤ä¸ªé€‰é¡¹åQšç”¨äºŽå¢žé‡çƒ¦å¼•和扚w‡ç´¢å¼•优化ã€?br />-a  增量索引åQŒè¡¨½Cºåœ¨åŽŸæœ‰ç´¢å¼•çš„åŸº¼‹€ä¸Šæ‰©å±?br />-m  mergeFactor 在Lucene中mergeFactor是一个针å¯Òމ¹é‡çƒ¦å¼•的优化参数åQŒæŽ§åˆ¶å¤šž®‘条处理完多ž®‘条记录åQˆDocumentåQ‰åŽåQŒå†™å…¥ä¸€‹Æ¡çƒ¦å¼•,写入频率­‘Šé«˜åQŒå†…å­˜ä‹É用越ž®‘,但烦引速度­‘Šæ…¢åQŒæ‰€ä»¥åœ¨å¤§æ‰¹é‡æ•°æ®å¯¼å…¥æ—¶éœ€è¦å¢žå¤§æ–‡ä»¶å†™å…¥çš„é—´éš”åQŒå¤šè®©çƒ¦å¼•在内存中操作ã€?br />
    搜烦¾l“果输出åQ?br />

    以下是系¾lŸè®¾è®¡è¿‡½E‹ä¸­ä¸€äº›è®¾è®¡çš„æ€èµ\åQ?br />

    åšäØ“å·¥ä¸šæ ‡å‡†çš„XML

    记得以前有关于肯德基的炸薯条断顿的报道。从˜q™ä¸ªäº‹äšg报道中我们可以看åˆîC¸€¿Uæ›´é«˜æ•ˆçš„管理体¾p»ï¼šå¯¹äºŽå¿«é¤åº—这样全球性的企业来说åQŒè¦ä¿è¯å„地提供的薯条品质,成本最低的æ–ÒŽ³•è‚¯å®šæ˜¯ä¾é æœºå™¨è€Œä¸æ˜¯åŽ¨å¸ˆï¼Œå¦‚æžœè¦æ±‚è–¯æ¡æœø™ƒ½å¤Ÿå¤„理各¿UåŞ状不一的土豆,机器的复杂程度和¾l´æŠ¤æˆæœ¬éƒ½ä¼šå¾ˆé«˜ã€‚所以土豆必™åÖM¸¥æ ¼ç¬¦åˆå·¥ä¸šæ ‡å‡†æ‰èƒ½è®©¾l“构比较½Ž€å•的薯条机生产出½W¦åˆæ ‡å‡†çš„薯条,因此åQŒè–¯æ¡çš„加工机械会严格按照土豆协会的土豆工业标准设计。高质量的原料可以大大降低后期加工设备的成本åQŒå› æ­¤ä»Žæ€ÖM½“成本上讲˜q˜æ˜¯åˆç®—çš„ã€?

    对于软äšg应用开发者来è¯ß_¼šåº”用和应用之é—ß_¼Œä¼ä¸šå’Œä¼ä¸šä¹‹é—´äº¤æ¢çš„æ•°æ®å¥½æ¯”ž®±æ˜¯åœŸè±†åQŒç™½èœï¼ŒæŒ‰ç…§ä¸¥æ ¼çš„XML标准设计的接口作ä¸ÞZ¼ä¸šä¹‹é—´åŽå°æ•°æ®äº¤æ¢çš„工业标准åQŒè™½ç„¶ä¸å¦‚简单的CSV格式高效åQŒä½†¾~ø™ƒ½å¤§å¤§½Ž€åŒ–下游工序的后期加工成本ã€?br />

    不难惌™±¡ä¸ÞZ»€ä¹ˆå¤„理HTML的浏览器åQšIEå’ŒMozilla½{‰æµè§ˆå™¨è½¯äšg大小都在10M以上åQŒä½†ä¸€èˆ¬å¤„理XML的解析器一般都在几百K。除了没有界面外åQŒHTML‹¹è§ˆå™¨éœ€è¦äؓ太多不规范的HTML代码提供大量定w”™å¤„理也是一个很重要的原因,而语法严æ û|¼Œè§„则½Ž€å•çš„XML处理器就可以做的很简短,高效åQŒä½“¿U¯è¶Šâ€œå°â€å°±æ„å‘³ç€é€‚应性越òq¿ï¼š˜q™ç‚¹åœ¨æ‰‹æœø™¿™æ ïLš„¼‹¬äšg配置比较低的讑֤‡çŽ¯å¢ƒä¸­æ˜¾å¾—å°¤å…‰™‡è¦ã€?/p>

    虽然XML在后台数据交换方面,有着巨大的潜力。在前台表现斚w¢åQŒXMLòq¶ä¸ä¼šé©¬ä¸Šä»£æ›¿HTMLåQŒå¾ˆå¤šé€šè¿‡XSLT输出的HTML仍然需要结合CSS来进行表现。XML ==XSLT==> HTML + CSS。但是由于太多的¾|‘页都是用HTML做的åQŒç›¸ä¿¡XML没有必要马上代替˜q™äº›å·²æœ‰çš„æœºåˆ¶ã€?br />
    此外在应用的国际化支持方面XMLå’ŒJava½Ž€ç›´æ˜¯¾lé…åQšXML数据源用Java解析后是UNICODEåQŒè¿™æ äh— è®ºæ˜¯æ—¥æ–‡åQŒç¹ä½“中文还是å¯d文的内容我们都可以在一个烦引库中同时进行搜索。这样针对其他语­a€çš„æ”¯æŒåªæ˜¯è®¾è®¡å„¿Uè¯­­a€ç•Œé¢çš„问题了ã€?/p>

          GBK          \                                       / BIG5
    BIG5 - UNICODE ====> Unicode - GB2312
    SJIS - (XML) (XML) - SJIS
    ISO-8859-1 / \ ISO-8859-1
    使用XML的另外一个额外好处在于:开发äh员一般都没有仔细理解Java的字½W¦é›†åQˆå…¶å®žä¸Šæ˜¯JVM的缺省file.encoding属性)受系¾lŸæœ¬åœ°åŒ–讄¡½®çš„媄响,åŸÞZºŽXML的输入ä‹É得数据的字符解码˜q‡ç¨‹å˜å¾—透明åQšä¸ç”¨å†å’Œç”¨æˆ¯‚§£é‡Šéœ€è¦å¦‚何解码,¾~–码数据源。不˜q‡ï¼ŒXML的学习成本还是比较高的,假设你HTML的学习成本是1åQŒXMLåˆ™å¯èƒ½äØ“10åQŒè€ŒXSLT的学习成本则可能高达100ã€?br />

    传统数据库应用的全文‹‚€ç´¢åŠ é€?/h2>

    让数据库负责¾_„¡¡®åŒšw…åQŒå°†æ¨¡ç³ŠåŒšw…ç”¨ç‹¬ç«‹çš„¾pȝ»Ÿå®žçް

    一个站点内容积累在万çñ”以上åQŒç«™å†…全文检索就会是用户定位最主要的手ŒDµï¼Œè€Œå…³é”®è¯‹‚€ç´¢æ˜¯ç”¨æˆ·æœ€ç†Ÿæ‚‰çš„æ–¹æ³•。因此基于数据库的传¾lŸWEB应用在全文检索需求还是很大的ã€?br />
    但是可怕的%like%数据库操作可能会吃掉数据库服务器90%以上的CPU。Oracle MSSQL½{‰æ•°æ®åº“服务器中数据库内¾|®çš„全文‹‚€ç´¢åŸºæœ¬ä¸Šéƒ½ä¸å¤ªé€‚合WEB应用。而数据库另外一个的弊端在于对于条äšg½Ž€å•的查询˜q”回¾l“果集非常大åQšæ•°æ®åº“òq¶ä¸çŸ¥é“如何面向用户最兛_¿ƒçš„çš„å¤?00条结果进行优化。根据以前的¾lŸè®¡åQšå¤´100条结果往往已经可以满èƒö95åQ…以上用户需求ã€?br />
    需要缓存设计:æ ÒŽ®æˆ‘们的经验,在应用设计中没有必要˜q›è¡Œå†…置的结果缓存设计:让前台的应用服务器内¾|®çš„¾~“å­˜æœºåˆ¶æˆ–è€…åç›æ€»£ç†ç¼“存服务器˜q›è¡Œ¾~“å­˜ž®±å¤Ÿäº†ã€?br />

    数据同步½{–ç•¥

    æ€ÖM½“上讲åQŒå…¨æ–‡æ£€ç´¢å’Œæ•°æ®åº“其实是2¿Uæ ¹æœ¬ä¸åŒçš„应用模式åQŒå…¨æ–‡æ£€ç´¢ç³»¾lŸå…¶å®žå¾€å¾€ä¹Ÿæ²¡æœ‰å¿…要和数据库那么高的实时同步机åˆÓž¼Œå¦‚果按照åQšä½Žæ›´æ–°åQŒé«˜¾~“存的模式进行设计:数据库数据到全文索引的同步过½E‹ä¸€èˆ¬éƒ½å¯ä»¥é€šè¿‡è„šæœ¬å®šæœŸž®†æ•°æ®åº“的数据导出成XMLåQŒç„¶åŽè¿›å…¥Lucene的全文烦引。而针对原有数据记录的更新和删除,其实一般可以通过定期的重建烦引解冟뀂WebLucene其中索引部分是一个IndexRunner的命令行½E‹åºå®žçŽ°çš„ã€?br />

    ¾l“果排序½{–ç•¥

    站内全文索引另外一个很重要的需求是可定制的排序åQšæŒ‰æ—‰™—´åQŒæŒ‰ä»äh ¼åQŒæŒ‰ç‚¹å‡»é‡â€¦â€¦Lucene全文索引¾~ºçœåªæä¾›äº†æ ÒŽ®å…³é”®è¯åœ¨åŽŸæ–‡ä¸­çš„åŒšw…åº¦æŽ’序,而ä“Q何根据某个字ŒD늚„倯D¿›è¡ŒæŽ’序的都无法避免再‹Æ¡éåŽ†æ•°æ®ï¼Œä»Žè€Œå¯¼è‡´æ€§èƒ½æœ‰æ•°é‡çñ”的下降(½{‰äºŽåˆæ˜¯å?Like%‹‚€ç´¢ï¼‰åQŒè€Œåœ¨ç´¢å¼•中,除了匚w…åº¦SCORE外,唯一能用来排序的ž®±æ˜¯ç´¢å¼•记录的IDåQŒæ‰€ä»¥ä¸€ä¸ªæ¯”较高效率实现定制排序的方法时åQšåœ¨ç´¢å¼•æ—Óž¼Œè®©è¿›å…¥Lucene全文的顺序对应着一定规则:比如旉™—´åQŒç„¶åŽåœ¨æœçƒ¦æ—Óž¼Œè®©æœç´¢ç»“果按照烦引记录的ID˜q›è¡ŒæŽ’序åQˆæˆ–倒排åQ‰ã€?br />

    搜烦¾l“果关键词标引的实现

    搜烦¾l“果中关键词通过¾U¢è‰²æˆ–者黑体字标记出来åQŒäؓ了能够更恰当的显½Cºç›¸å…³ä¸Šä¸‹æ–‡çš„问题,标引是通过限制了一个扫描范å›ß_¼Œç„¶åŽæ ÒŽ®ä¸€ä¸ªåˆ†æžå™¨ž®†æŒ‡å®šçš„词流式的è¯Õd–出来åQŒç„¶å?br />

    全文‹‚€ç´¢å’Œå…¶ä»–应用的集æˆ?/h2>其实核心的是一个Luceneçš„XML接口åQšSAX方式的数据导入和DOM方式的结果输出ã€?br />
    XML的数据源定义åQ?br />只要是能够映ž®„成表=》记录=》字ŒDµè¿™æ ·å±‚‹Æ¡ç»“构的都可以。因此WebLucene索引的设计比较灵‹z»ï¼Œç”šè‡³å¯ä»¥ç›´æŽ¥ç”¨æ¥ç´¢å¼•RSSã€?br />
    XML¾l“果定义åQšå‚考了Googleçš„XML接口的设è®?/a>

    如果没有SERVLET界面åQŒæä¾›XML输出的DOMSearcher也可以很方便集成到各¿Uåº”用系¾lŸä¸­ã€?br />

    参考资料:

    ¾pȝ»Ÿè®¾è®¡ä¸­ä‹É用的一些模块:

    其他开发äh员的一些反馈和改进

    原帖: 



    ]]> Ö÷Õ¾Ö©Öë³ØÄ£°å£º ·ï¸ÔÏØ| µ¤Õ¯ÏØ| ½ú³Ç| æÄÔ´ÏØ| ºÍË¶ÏØ| ÀÉÏªÏØ| ½õÆÁÏØ| ÁÙÕÄÏØ| иÉÏØ| Ê©µéÏØ| ×ó¹±ÏØ| ÓñÊ÷ÏØ| ´óÀíÊÐ| ¾ÅÁú³ÇÇø| ̨ÄÏÏØ| »³À´ÏØ| Âò³µ| ºÍÌïÏØ| Çú¾¸ÊÐ| Íû¿üÏØ| º£µíÇø| Ïã¸ñÀïÀ­ÏØ| ¸§ËÉÏØ| ÔÓ¶àÏØ| ´óÓ¢ÏØ| ÔóÖÝÏØ| ´Ó»¯ÊÐ| ¸ÞÀ¼ÏØ| ÍþÔ¶ÏØ| ±£µÂÏØ| »¯ÖÝÊÐ| ÄþÎäÏØ| ÄϾ©ÊÐ| ÄþÃ÷ÏØ| ÔæÇ¿ÏØ| ×óÔÆÏØ| ¸ß±®µêÊÐ| ´óÌïÏØ| ÖÛɽÊÐ| ¾¸°²ÏØ| ʯʨÊÐ|