Lucene Jackrabbit

时间:2010-12-08 16:02:32

标签: lucene xpath jackrabbit

最近我们为我们的应用程序添加了Lucene(2.4.1)支持,该应用程序与Jackrabbit(1.6.2)一起使用。我们已经完成了像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转义了所有特殊字符。

我做错了什么?

P.S。我还有一个问题 - 在Lucene文档中说“你不能使用*或?符号作为搜索的第一个字符”,但我使用它并且它有效。为什么呢?

1 个答案:

答案 0 :(得分:0)

我发现了问题。与提取器有一些误解,它们用于长耳兔用于索引内容。我不想详细介绍,但可以说这一段Extractors的代码是造成我所有问题的原因:

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

如果有人对此感兴趣 - 我可以更详细地解释。