某某某 2008-03-05
liferay搜索用的是lucene搜索引擎,lucene需要先建立索引然后再搜索,建立索引会在{user}/liferay/lucene下面保存着,拿日志文章来说他是在建新增一个文章的时候建立的索引,4.3.3版本以前只要建立一个文章他就会建立一个索引,到了4.3.3以后增加文章时有一个复先框是可以选择是否要加索引的,具体看com.liferay.portlet.journal.util.Indexer这个类,你可以看到他建了那些字段,当然这些操作都是在文章审批通过的情况下才会做,4.3.3以前的版本每次启动后会自动的在{user}/liferay/lucene下面的文件里增加索引,而到了4.3.3以后每次启动会删除下面的文件,不过不用担心在4.3.3以后的版本中liferay提供了重新批量增加所有索引,在admin->admin->servece->index里面,执行一下OK,十几分钟后就会在{user}/liferay/lucene生成所有的索引,这个时间是要视你数据库和机器所定,最好启动前把liferay整个文件夹删掉,不然有时候会报一个IOException.如果你用的是4.3.2之前的版本,并且增加日志,blog等数据时,用的不是一台web服务器,那可麻烦就大了,你就会发现搜索功能不好使了,除非你能把两台服务器上的索引文件合二为一.接着刚才的说,索引建立好后,就是搜索了,还拿日志内容搜索为例,com.liferay.portal.service.impl.CompanyLocalServiceImpl.search()查出索引,com.liferay.portlet.journalcontentsearch.util.ContentHits.recordHits()方法会进行一次过滤,因为有些文章是没有显示在网页上的,这个是根据journalcontentsearch这张表来过滤的,如果你想把他也显示出来,可以根据journalarticle这个portlet的做法,都发往view_article_content.jsp这个来显示.