私はHibernateSearch/ Luceneを使用して、名前でオブジェクトを検索するための非常に単純なインデックスを維持しています。
私のモデルクラスはすべて、NamedModel
基本的に次のように見えるクラスを拡張します。
@MappedSuperclass
public abstract class NamedModel {
@Column(unique = true)
@Field(store = Store.YES, index = Index.UN_TOKENIZED)
protected String name;
}
私の問題はBooleanQuery$TooManyClauses
、特定の文字で始まる名前のオブジェクトのインデックスをクエリすると例外が発生すること"name:l*"
です。のようなクエリ"name:lin*"
は問題なく機能します。実際、ワイルドカードが機能する前に複数の文字を使用するクエリは機能します。
ネットで同様の問題を検索しているときに、かなり複雑なクエリを使用している人しか見つかりませんでした。それが常に例外の原因であるように見えました。maxClauseCount
制限に達したからといって制限を変更するのは良い習慣ではないと思うので、増やしたくありません。
ここでの問題は何ですか?