ヒびノめモ
ぜんぜん「日々の」じゃないじゃん。。。
2011年5月30日月曜日
Solr 4.0 の cross-core join を試す
そこで、まだ 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 は、強力な機能だと思うので、これからも目がはなせません。
2010年10月20日水曜日
Eclipse の .classpath はどこで操作?Server 実行時に Maven 関係でハマり
いま、svn リポジトリにアップしたソースコードから開発環境を戻しているんだが、超ハマり。
相手は何かと言えば ...
- Eclipse の 動的 Web プロジェクト
- Maven2 でプロジェクトを構成している
- Spring を使用している(web.xml 内で ContextLoaderListener を呼び出している)
- ソースは全て svn に入れているが、.classpath, .project ファイルは svn に入れない
- Subversive で svn から新規プロジェクトを作成
- M2Eclipse で プロジェクト構成の更新を行い
- STS の Spring プロジェクト・ネーチャーを追加
- サーバーで実行を行う
- → ここでエラー
2010/10/20 21:53:02 org.apache.catalina.core.StandardContext listenerStart 致命的: クラス org.springframework.web.context.request.RequestContextListener のアプリケーションリスナの設定中にエラーが発生しました java.lang.ClassNotFoundException: org.springframework.web.context.request.RequestContextListener at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4078) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardHost.start(StandardHost.java:807) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445) at org.apache.catalina.core.StandardService.start(StandardService.java:519) at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:581) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 2010/10/20 21:53:02 org.apache.catalina.core.StandardContext listenerStart 致命的: クラス org.springframework.web.context.ContextLoaderListener のアプリケーションリスナの設定中にエラーが発生しました java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4078) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardHost.start(StandardHost.java:807) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445) at org.apache.catalina.core.StandardService.start(StandardService.java:519) at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:581) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 2010/10/20 21:53:02 org.apache.catalina.core.StandardContext listenerStart 致命的: 前のエラーのためにアプリケーションリスナのインストールをスキップします 2010/10/20 21:53:02 org.apache.catalina.core.StandardContext start 致命的: Error listenerStart 2010/10/20 21:53:02 org.apache.catalina.core.StandardContext start 致命的: 以前のエラーのためにコンテキストの起動が失敗しました [/xxxxxxxxxx]
で、いろいろ原因を探った結果、なんか Server (Eclipse 上で動くやつね)で起動する時に、Maven のライブラリがデプロイされていないっぽい???
そんで、以前の環境を確認したら、.classpath ファイルの中身に違いを発見
前のは
で、今のは
ま・て・よ、、、
これか!?この部分か!?
で、試したらエラーは解決して、実行でけた!!
よかった~
しかし、この値って、どこで操作して設定するものなんだろうか ... 疑問は残る
※ 追記
判明した!!
パッケージ・エクスプローラーを右クリックして、プロパティを選択すると出てくる「*** の プロパティー」ウィンドウの左のツリーの中に「Deployment Assembly」というのがあって、ここを操作すると、.classpach ファイルと .settings/org.eclipse.wst.common.component ファイルの両方を操作するっぽい
スッキリした~
2010年10月18日月曜日
WST の org.eclipse.wst.common.component ファイルをもっと知りたい
svn からソースコードを持ってきて、開発環境を再構築した時のおはなし。
ソースコードを持ってきて、m2eclipse の 「プロジェクト構成の更新」を行って .classpath と .project ファイルを作り直す。んーで、Server で実行させようとしたら Spring の Context ファイルが classpath に無いよってエラー。
Eclipse の ビルドパスをいじくりいじくり、war ファイルの生成は OK になったが、Server を使ってローカルマシンでの実行ができないまんま。。。
そこで、.settings ディレクトリ以下に自動で生成された org.eclipse.wst.common.component のファイルが、、、
これが原因じゃないか?...
そこで ...
に直してあげたら、ちゃんと Spring の Context ファイルを読み込むようになった。
context ファイルは web.xml 内にて、「classpath:『コンテキストファイル名』」で指定されていた。
つまり、Server の起動時にデプロイされるものが最初の指定では、「src/main/java」以下のもののみだったのが(あれ?ソースコード???)、org.eclipse.wst.common.component を更新して「src/main/resources」と「target/classes」もデプロイされるようになって、ちゃんと動くようになった。
ということか
ちなみに、axis2 を使用した時には を追加してた。
2010年4月23日金曜日
ソースコードのハイライト
ソースコードのハイライトをテスト
def func(): return None
でけた!
つまり ...
<!-- SYNTAX HIGHLIGHTER BEGINS --> <link href='http://alexgorbatchev.com/pub/sh/current/styles/shCore.css' rel='stylesheet' type='text/css'/> <link href='http://alexgorbatchev.com/pub/sh/current/styles/shThemeDefault.css' rel='stylesheet' type='text/css'/> <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js' type='text/javascript'></script> <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCpp.js' type='text/javascript'></script> <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCSharp.js' type='text/javascript'></script> <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCss.js' type='text/javascript'></script> <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJava.js' type='text/javascript'></script> <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js' type='text/javascript'></script> <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPhp.js' type='text/javascript'></script> <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPython.js' type='text/javascript'></script> <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushRuby.js' type='text/javascript'></script> <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushSql.js' type='text/javascript'></script> <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushVb.js' type='text/javascript'></script> <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js' type='text/javascript'></script> <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPerl.js' type='text/javascript'></script> <script language='javascript'> SyntaxHighlighter.config.bloggerMode = true; SyntaxHighlighter.config.clipboardSwf = 'http://alexgorbatchev.com/pub/sh/current/scripts/clipboard.swf'; SyntaxHighlighter.all(); </script> <!-- SYNTAX HIGHLIGHTER ENDS -->
これを、テンプレートの HTML に貼りつければ OK ... っと
テンプレートを変更すると、消えちゃうのがチョイめんどいなぁ ...
Blogger に貼り付ける時は ...
<pre class='brush: ***'> 内容(エスケープ済) </pre>
もしくは
<script type='syntaxhighlighter' class='brush: ***'> <![CDATA[ 内容(エスケープ不要) ]]> </script>
こんな感じで ...