当前位置:  开发笔记 > 前端 > 正文

使用Lucene:如果我进行前缀搜索,为什么会出现Too Many Clauses错误?

如何解决《使用Lucene:如果我进行前缀搜索,为什么会出现TooManyClauses错误?》经验,为你挑选了1个好方法。

我有一个应用程序做前缀搜索一段时间.最近索引规模增加了,结果发现一些前缀太多了,无法让lucene处理.它一直给我一个Too Many Clauses错误,这非常令人沮丧,因为我一直在查看我的JAR并确认所包含的代码都没有实际使用布尔查询.

为什么不抛出像Too Many Hits例外的东西?为什么增加布尔查询的静态max子句整数实际上会使这个错误消失,当我肯定只使用前缀查询?查询是如何运行的,我不理解; 是他们秘密成为布尔查询?



1> Ryan Ahearn..:

我以前打过这个.这与事实有关,当你调用Query.rewrite()时,lucene在封面下将许多(所有?)事物转换为布尔查询

来自:http://lucene.apache.org/java/2_2_0/api/org/apache/lucene/search/Query.html#rewrite(org.apache.lucene.index.IndexReader)

public Query rewrite(IndexReader reader)
              throws IOException

    Expert: called to re-write queries into primitive queries.
            For example, a PrefixQuery will be rewritten into a
            BooleanQuery that consists of TermQuerys.

    Throws:
        IOException

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有