join を使うと index の設計がシンプルになるんじゃないかなぁと思って、ずっと追っかけてます。
そこで、まだ trunk にある 4.0 を落としてきていろいろやってみました。
しかし、できるようになったと書いてあった cross-core join で、RangeQuery や PrefixQuery などを発行すると結果が 0 件になるという現象に遭遇。
それが使用なのか、バグなのか不明のまま、とりあえず検索できるようにならないかとソースを読み、試行錯誤をしてみました。
JoinQParserPlugin.java で定義されている JoinQuery クラス。これは、Query クラスを継承しているわけですが、その「public Weight weight(IndexSearcher searcher) throws IOException」 メソッドをオーバーライドして、以下のように記述。
上記コードが他への何かしらの影響を及ぼすかもしれません。(勉強不足なのでスンマセン)
それに、4.0 はまだ正式リリースされているわけではないですから、改善されることに期待しています。
せっかく cross-core join があっても、RangeQuery や PrefixQuery が使えなければ、用途が狭まってしまいます。
join は、強力な機能だと思うので、これからも目がはなせません。
上のコードでいろいろやってたところ、やはり変な動作は残りました。
返信削除開発チームに知らせるには、やはり「メーリングリストに投稿」でしょうか。
「いや、これは仕様だもん」って言われたらどうしよう。。。