1

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

例: jcr:data プロパティの Node(jcr:content) に次のテキストがあります。

The quick brown fox jumps over the lazy dog 
!@#$%^& 
travmik! 
tra!vmik

私のXPathクエリは次のとおりです。

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

それから私は検索しようとします:

「q」、「qu」、「qui」、「quic」、「quick」、「k」、「ck」、「ick」、「uick」、「quick brown fox」、「quick fox」、「tra」 、「travmik」、「mik」 - すべて問題なし

"tra!vmik"、"travmik!"、"!@#$" - なし

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

私は何を間違えましたか?

Ps もう 1 つ質問があります。Lucene のドキュメントでは、「検索の最初の文字として * または ? 記号を使用することはできません」と書かれていますが、私は使用して動作します。なんで?

4

1 に答える 1

0

問題が見つかりました。jackrabbit でコンテンツのインデックス作成に使用されるエクストラクタとの誤解がありました。詳細には触れたくありませんが、Extractors の 1 つからのこのコードがすべての問題の原因であると言えます。

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

誰かがこれに興味を持っているなら - 私はより詳細に説明することができます.

于 2010-12-12T17:45:01.020 に答える