近期要对网站平台搞一个搜索引擎,google,baidu了很多资料!
本想用多线程建索的,不过俺的网站平台不是一个论坛,而且用多线程建索更新索引也比较不实时,不过在些可以说一下多线程的做法
多线程建索:可以建几个indexWriter对象,由于indexWriter同一时间只能有一个,所以几个indexWriter就要分别写入几个对应的FSDirectory,这样,在一段特定的时间后再合并到一个索引目录里;别外你也可以不用写到磁盘上,可以分别直接写入内存,在一段特定的时间后再合并,然后写到一个索引目录里;不过这样你就得等到特定时间优化和indexWriter.close后才能检索到这些索引数据。
我自已的做法是只用单个indexWriter,然后在添加固定条目的索引后再indexWriter.close一次,把索引写入磁盘目录,然后需要建索时再重新实例化该indexWriter,然后又待建索数量到达再写入目录,这样的实效性还快一些,而已建索本来就是一个很快的东东。
而优化我是利用quartz来间隔时间调用一次,优化很耗时的,没必要时时优化。
而搜索时,你大可以使用多线程。(不过我不用线程也足够啦!!