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 に移行するにつれて、この問題に対処する方法を知っている人はいますか?