Index: src/main/java/org/apache/jackrabbit/core/query/lucene/IDField.java =================================================================== --- src/main/java/org/apache/jackrabbit/core/query/lucene/IDField.java (revision 0) +++ src/main/java/org/apache/jackrabbit/core/query/lucene/IDField.java (revision 0) @@ -0,0 +1,58 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.jackrabbit.core.query.lucene; + +import java.io.Reader; + +import org.apache.jackrabbit.core.id.NodeId; +import org.apache.lucene.analysis.TokenStream; +import org.apache.lucene.document.AbstractField; + +/** + * IDField implements a lucene field for the id of a node. + */ +public class IDField extends AbstractField { + + private static final long serialVersionUID = 3322062255855425638L; + + private final NodeId id; + + public IDField(NodeId id) { + this.id = id; + this.name = FieldNames.UUID; + this.isStored = true; + this.isTokenized = false; + this.omitNorms = true; + this.omitTf = true; + } + + public String stringValue() { + return id.toString(); + } + + public Reader readerValue() { + return null; + } + + public byte[] binaryValue() { + return null; + } + + public TokenStream tokenStreamValue() { + return null; + } +} Property changes on: src\main\java\org\apache\jackrabbit\core\query\lucene\IDField.java ___________________________________________________________________ Added: svn:eol-style + native Index: src/main/java/org/apache/jackrabbit/core/query/lucene/NodeIndexer.java =================================================================== --- src/main/java/org/apache/jackrabbit/core/query/lucene/NodeIndexer.java (revision 958573) +++ src/main/java/org/apache/jackrabbit/core/query/lucene/NodeIndexer.java (working copy) @@ -213,9 +213,7 @@ // special fields // UUID - doc.add(new Field( - FieldNames.UUID, node.getNodeId().toString(), - Field.Store.YES, Field.Index.NOT_ANALYZED_NO_NORMS)); + doc.add(new IDField(node.getNodeId())); try { // parent UUID if (node.getParentId() == null) { Index: src/test/java/org/apache/jackrabbit/core/query/lucene/IDFieldTest.java =================================================================== --- src/test/java/org/apache/jackrabbit/core/query/lucene/IDFieldTest.java (revision 0) +++ src/test/java/org/apache/jackrabbit/core/query/lucene/IDFieldTest.java (revision 0) @@ -0,0 +1,46 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.jackrabbit.core.query.lucene; + +import org.apache.jackrabbit.core.id.NodeId; +import org.apache.lucene.document.Field; + +import junit.framework.TestCase; + +/** + * IDFieldTest... + */ +public class IDFieldTest extends TestCase { + + public void testPerformance() { + NodeId id = new NodeId(); + long time = System.currentTimeMillis(); + for (int i = 0; i < 1000 * 1000; i++) { + new IDField(id); + } + time = System.currentTimeMillis() - time; + System.out.println("IDField: " + time + " ms."); + + time = System.currentTimeMillis(); + for (int i = 0; i < 1000 * 1000; i++) { + new Field(FieldNames.UUID, id.toString(), Field.Store.YES, + Field.Index.NOT_ANALYZED_NO_NORMS); + } + time = System.currentTimeMillis() - time; + System.out.println("Field: " + time + " ms."); + } +} Property changes on: src\test\java\org\apache\jackrabbit\core\query\lucene\IDFieldTest.java ___________________________________________________________________ Added: svn:eol-style + native