2012-04-18 11 views
0

私は "contains"検索をしようとしている約500万のドキュメントを持つインデックスを持っています。私はこれを達成する方法を知っており、顧客のパフォーマンスコストについて説明しましたが、それが彼らが望むものです。期待されるように、インデックス全体に対して "contains"検索を実行するのは非常に遅いですが、インデックスの非常に小さなサブセット(100ドキュメント程度)だけを検索したい場合もあります。私は結果を正しく制限する検索にフィルタを追加することでこれを行っています。しかし、私はこの検索とインデックス全体の検索がほぼ同じように実行されることがわかります。私がここで紛失しているものはありますか?この検索がインデックス全体を検索しているように感じます。Luceneはインデックスのサブセットに検索を含める

+0

"contains"検索は何を意味しますか?ワイルドカードクエリ? –

+0

先頭と末尾のアスタリスクを含むワイルドカードクエリ。 – goalie7960

答えて

1

検索にフィルタを追加しても、インデックスの範囲は制限されません。

あなたの検索から必要なものについてもっと明確にする必要がありますが、私はあなたが望むものが可能であると信じていません。

ドキュメントのサブセットは常に同じですか?もしそうなら、多分あなたは複数の指数で巧妙になることができます。 (例えば、より小さいインデックスを検索し、十分なヒットがない場合は、より大きなインデックスを検索する)。

+0

文書のサブセットは可変です。理想的には、可能な結果セットを最初に絞ったクエリを指定したいと思うのですが、次に高価なクエリが2番目に実行されると思います。そのような音は不可能です。興味深い。 – goalie7960

1

お試しくださいSingleCharTokenAnalyzer

+0

だから、これは各文字をそれ自身で索引付けするようです。検索を実行すると、すべてのクエリに対してANDが実行されます。これは実際にはクエリを展開する代わりにインデックスを使用しているので、高速にする必要がありますか? – goalie7960

+0

@ goalie7960ベストな方法は試してみることです。私は過去にそれを使ってURLの一部を見つけました。私はその結果に満足していました。 –

+0

私は500万レコードを含むインデックスでこれを実行しました。あなたが検索する文字数が少なくてもうまくいくようです。私はそれが作成するすべてのクエリでAND演算を行うのに多くの時間を費やすと思います。 – goalie7960

関連する問題