Lucene优化

解决大量磁盘IO

  • config.setMaxBufferedDocs(100000); 控制写入一个新的segment前内存中保存的document的
    数目,设置较大的数目可以加快建索引速度。
    数值越大索引速度越快, 但是会消耗更多的内存
  • indexWriter.forceMerge(文档数量); 设置N个文档合并为一个段
    数值越大索引速度越快, 搜索速度越慢; 值越小索引速度越慢, 搜索速度越快
    更高的值意味着索引期间更低的段合并开销,但同时也意味着更慢的搜索速度,因为此时的索引通
    常会包含更多的段。如果该值设置的过高,能获得更高的索引性能。但若在最后进行索引优化,那
    么较低的值会带来更快的搜索速度,因为在索引操作期间程序会利用并发机制完成段合并操作。故
    建议对程序分别进行高低多种值的测试,利用计算机的实际性能来告诉你最优值。

选择合适的分词器

不同的分词器分词效果不同, 所用时间也不同
虽然StandardAnalyzer切分词速度快过IKAnalyzer, 但是由于StandardAnalyzer对中文支持不好, 所
以为了追求好的分词效果, 为了追求查询时的准确率, 也只能用IKAnalyzer分词器, IKAnalyzer支持停
用词典和扩展词典, 可以通过调整两个词典中的内容, 来提升查询匹配的精度

选择合适的位置存放索引库

Lucene优化_第1张图片

Directory directory = MMapDirectory.open(Paths.get("xxx"));

搜索api的选择

  1. 尽量使用TermQuery代替QueryParser
  2. 尽量避免大范围的日期查询

你可能感兴趣的:(Lucene笔记,lucene,全文检索,搜索引擎)