2010-12-08 11 views
1

最近、Jackrabbit(1.6.2)で動作するアプリケーションにLucene(2.4.1)のサポートを追加しました。私たちはjackrabbitチュートリアルで説明されているようにすべてを行っています。そして、すべての作品はほぼ正常です。しかし、私はいくつかの奇妙な動作に気付き、それについてのドキュメントを見つけることはできません。私はそれについてあなたに尋ねることに決めました。例えばLucene Jackrabbit

:JCRに:私は、ノード(コンテンツJCR):内のテキストを次したデータプロパティを

The quick brown fox jumps over the lazy dog 
[email protected]#$%^& 
travmik! 
tra!vmik 

私のXPathクエリは以下の通りです:

String query = "root/element(*,my:documentBody) 
         [jcr:contains(*/*/element(*),'*" + param +"*')]"; 

それから私は、検索しよう: 「クイック」、「キック」、「クイック」、「k」、「ck」、「ick」、「ウイック」、「クイックブラウンキツネ」、「クイックキツネ」、「クイックキツネ」、 、 "tra"、 "travmik"、 "mik" - すべてがOK ok

"TRA vmik!"、 "travmik!"、 "@#$!" - 何

そして、はい、私はthisからすべての特殊文字をエスケープ。

どうしたのですか?

P.S.もう1つの質問があります。Lucene docsによれば、「検索の最初の文字として*または?記号を使用することはできませんが、私は使用しています。どうして?

答えて

0

問題が見つかりました。コンテンツを索引付けするためにジャバラビットで使用されるエクストラクターの誤解がありました。私は詳細には行きたくないが、抽出器のいずれかからのコードのこの作品は、すべての私の問題の原因であると言うことができます:

if (!Character.isLetterOrDigit(c)) { 
    if (!space) { 
     space = true; 
     buffer.append(' '); 
     continue; 
    } 
    continue; 
} 

誰かがこのに興味を持っている場合 - 私は、より詳細に説明することができます。