Lucene 露西妮兔

Lucene 露西妮兔,lucene,xpath,jackrabbit,Lucene,Xpath,Jackrabbit,最近,我们已经将Lucene2.4.1支持添加到与Jackrabbit1.6.2一起工作的应用程序中。我们所做的一切都像jackrabbit教程中描述的那样。一切都很好。但我注意到一些奇怪的行为,找不到任何关于它的文档。我决定问你这件事 例如:我在jcr:data属性的Nodejcr:content中有以下文本 The quick brown fox jumps over the lazy dog !@#$%^& travmik! tra!vmik 我的XPath查询如下所示:

最近,我们已经将Lucene2.4.1支持添加到与Jackrabbit1.6.2一起工作的应用程序中。我们所做的一切都像jackrabbit教程中描述的那样。一切都很好。但我注意到一些奇怪的行为,找不到任何关于它的文档。我决定问你这件事

例如:我在jcr:data属性的Nodejcr: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,quic,quic,k,ck,ick,uick,quic,quic,quic,quic,quic,quic,quic,quic,quic,quic,quic,quic,quic,k,ck,ck,quic,quic,quic,quic,quic,quic,quic

茶!vmik,travmik!,!@$-没什么

是的,我避开了所有的特殊角色

我做错了什么


另外,我还有一个问题——在Lucene文档中,你不能使用*或?符号作为搜索的第一个字符,但我使用它,并且它可以工作。为什么?我发现了这个问题。这是对jackrabbit中用于索引内容的提取器的一些误解。我不想详细说明,但可以说,这段来自某个提取器的代码是我所有问题的原因:

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

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

我也在尝试实现lucene全文搜索,但不知何故它不起作用,你能帮我解决这个问题吗