8

Solr 4.3.0 から Solr 4.4.0 にアップグレードしようとしたときに、次の例外に遭遇しました。

 java.lang.IllegalArgumentException: enablePositionIncrements=false is not supported anymore as of Lucene 4.4 as it can create broken token streams

この問題に私を導いた。介在するストップワード (enablePositionIncrements="true" で動作していた) に関係なく、クエリを一致させる必要があります。たとえば、「foo of the bar」は、「foo bar」、「foo of bar」、および「foo of the bar」に一致するドキュメントを検索します。このオプションは 4.4.0 で廃止されたため、同じ機能を維持する方法がよくわかりません。

パッケージ javadocは次を追加します。

選択したアナライザーがストップ ワード "is" と "the" をフィルター処理する場合、"blue is the sky" という文字列を含むドキュメントでは、トークン "blue"、"sky" のみがインデックス化され、position("sky") が使用されます。 = 3 + 位置(「青」)。ここで、"blue is the sky" というフレーズ クエリはそのドキュメントを検索します。これは、同じアナライザーがそのクエリから同じストップ ワードをフィルター処理するためです。しかし、"blue" と "sky" の間の位置の増分が 1 しかないため、フレーズ クエリ "blue sky" ではそのドキュメントは見つかりません。

この動作がアプリケーションのニーズに合わない場合は、フレーズ クエリの生成時に位置の増分を考慮しないようにクエリ パーサーを構成する必要があります。

しかし、これを行うためにクエリパーサーを実際に構成する方法については言及されていません。Solr が 5.0 に移行するにつれて、この問題に対処する方法を知っている人はいますか?

4

3 に答える 3

0

これが使用に推奨されるかどうかはわかりませんが、Lucene43StopFilterなど、Lucene 5 にはまだいくつかのレガシー クラスがあります。

残念ながら、Lucene 6 では消えてしまったようです...

于 2016-05-18T00:42:08.630 に答える
0

近接検索を使用できます。

"foo bar"~2
于 2013-09-07T13:59:22.593 に答える