全文搜索大体分为:数据采集,索引,搜索。
我认为最重要的是搜索效果,大体表现在准确性,搜索结果排序,稳定,速度。准确和分词相关,排序是如何让最适合的结果出现在最前面,稳定这里指索引和搜索时的稳定,速度指索引,搜索使用以及维护。
当然这一切加上硬件,人力综合成一个性价比,这个值决定了最终使用哪个搜索架构(像我这样的懒人通常会基于一些现有的东西,在上面堆砌来完成)
基本确定后,就会写更加细的测试代码,根据数据特性,业务特性进行优化,充分利用硬件发挥其特性。以lucene索引部分为例就是addDoc,updateDoc,deleteDoc,commit,optimize效率,分词速度,内存占用,硬盘占用等方面的细节数字。测试以真实数据为佳,切忌以别人的数据为准,因为他的情况不一定适用你。
有了上述测试数字,就能比较准确的设计适合自己业务的搜索系统,和业务设计的沟通贯彻整个过程,这里尤为重要。对其中涉及的难点,应该做一定测试,确保设计的系统是最适合的。这一过程中可能要借用其他第三方开源程序来补充时,那么就需要衡量使用它的收获和付出是否合算。
然后就是模型搭建,业务测试,压力测试。
最后上线,维护。
每个过程寻找瓶颈而不是提速,功能分离很重要,即便因此牺牲了部分性能和资源也值得。因为上线只是个开始,如何优化是接下来问题了,因为有了分离,测试优化就有了机会。
我认为最重要的是搜索效果,大体表现在准确性,搜索结果排序,稳定,速度。准确和分词相关,排序是如何让最适合的结果出现在最前面,稳定这里指索引和搜索时的稳定,速度指索引,搜索使用以及维护。
当然这一切加上硬件,人力综合成一个性价比,这个值决定了最终使用哪个搜索架构(像我这样的懒人通常会基于一些现有的东西,在上面堆砌来完成)
基本确定后,就会写更加细的测试代码,根据数据特性,业务特性进行优化,充分利用硬件发挥其特性。以lucene索引部分为例就是addDoc,updateDoc,deleteDoc,commit,optimize效率,分词速度,内存占用,硬盘占用等方面的细节数字。测试以真实数据为佳,切忌以别人的数据为准,因为他的情况不一定适用你。
有了上述测试数字,就能比较准确的设计适合自己业务的搜索系统,和业务设计的沟通贯彻整个过程,这里尤为重要。对其中涉及的难点,应该做一定测试,确保设计的系统是最适合的。这一过程中可能要借用其他第三方开源程序来补充时,那么就需要衡量使用它的收获和付出是否合算。
然后就是模型搭建,业务测试,压力测试。
最后上线,维护。
每个过程寻找瓶颈而不是提速,功能分离很重要,即便因此牺牲了部分性能和资源也值得。因为上线只是个开始,如何优化是接下来问题了,因为有了分离,测试优化就有了机会。