Hi, I'm Studying Berkeley DB XML now.
I am trying to load 5000 xml docs of appr. All the same dtd.
system: 3GHz; 1.5 Gig memory.
Index Strategy is "node-element-substring-string"
---------------------------------------------------------------------------=
-------------------------------------------------------
xml docment example>
<?xml version=3D"1.0" encoding=3D"utf-8" ?>
<dic>
<word>a</word>
<word>aaron</word>
<word>aback</word>
<word>abaissiez</word>
<word>abandon</word>
<word>abandoned</word>
<word>abase</word>
<word>abash</word>
<word>abashed</word>
<word>abate</word>
<word>abated</word>
<word>abatement</word>
<word>abatements</word>
<word>abates</word>
<word>abattement</word>
<word>abbe</word>
<word>abbess</word>
<word>abbey</word>
<word>abbeys</word>
<word>abbominable</word>
<word>abbot</word>
<word>abbots</word>
</dic>
---------------------------------------------------------------------------=
-------------------------------------------------------
CreateContainer.java
// Example BDB XML Container Create
im****t com.sleepycat.db.*;
im****t com.sleepycat.dbxml.*;
public class CreateContainer
{
public static void main ( String[] args )
throws Exception {
XmlManager xmlManager =3D null;
XmlContainer xmlContainer =3D null;
try {
xmlManager =3D new XmlManager();
// set Container type
xmlManager.setDefaultContainerType(XmlContainer.NodeContainer);
XmlContainerConfig containerConfig =3D new XmlContainerConfig();
containerConfig.setNodeContainer(true);
containerConfig.setIndexNodes(true);
xmlContainer =3D
xmlManager.createContainer("D:/Database/testBDBXML/BDBXMLContainerNode.dbxm=
l",
containerConfig);
containerConfig =3D xmlContainer.getContainerConfig();
if(containerConfig.getNodeContainer()) System.out.println("Set Node
Container");
if(containerConfig.getIndexNodes()) System.out.println("Set Index
Node");
if(xmlManager.getDefaultContainerType() =3D=3D 1)
System.out.println("This Container Type is Node Container");
}
finally {
try {
if ( xmlContainer !=3D null ) xmlContainer.close();
if ( xmlManager !=3D null ) xmlManager.close();
} catch ( XmlException ce ) {
// Exception handling
}
}
}
}
---------------------------------------------------------------------------=
-------------------------------------------------------
AddIndex.java
im****t com.sleepycat.dbxml.*;
public class AddIndex {
public static void main (String[] args)
throws Exception
{
XmlManager xmlManager =3D null;
XmlContainer xmlContainer =3D null;
try {
xmlManager =3D new XmlManager();
xmlContainer =3D
xmlManager.openContainer("/Database/testBDBXML/BDBXMLContainerNode.dbxml");
XmlIndexSpecification indexSpec =3D
xmlContainer.getIndexSpecification();
/* int indexType =3D XmlIndexSpecification.UNIQUE_OFF |
XmlIndexSpecification.PATH_NODE |
XmlIndexSpecification.NODE_ELEMENT |
XmlIndexSpecification.KEY_SUBSTRING;
*/
int syntaxType =3D XmlValue.STRING;
indexSpec.addIndex("", "word", "node-element-substring-string");
// indexSpec.addIndex("", "word", indexType, syntaxType);
XmlUpdateContext uContext =3D xmlManager.createUpdateContext();
xmlContainer.setIndexSpecification(indexSpec, uContext);
System.out.println(xmlContainer.getIndexNodes());
} catch(XmlException e) {
e.printStackTrace();
// Error Handling
} finally {
try {
if(xmlContainer !=3D null) {
xmlContainer.close();
}
if(xmlManager !=3D null) {
xmlManager.close();
}
} catch(XmlException ce) {
// Exception handling
}
}
}
}
---------------------------------------------------------------------------=
-------------------------------------------------------
IndexLooup.java
im****t com.sleepycat.dbxml.*;
public class IndexLookup {
public static void main (String[] args)
throws Exception
{
XmlManager xmlManager =3D null;
XmlContainer xmlContainer =3D null;
try {
xmlManager =3D new XmlManager();
xmlContainer =3D
xmlManager.openContainer("/Database/testBDBXML/BDBXMLContainerNode.dbxml");
XmlIndexSpecification is =3D xmlContainer.getIndexSpecification();
XmlIndexDeclaration idxDecl =3Dnull;
int count=3D0;
while((idxDecl =3D(is.next())) !=3Dnull){
System.out.println("For node '" + idxDecl.name + "', found index:
'" + idxDecl.index + "'.");
count++;
}
System.out.println(count+ " indices found.");
XmlQueryContext qContext =3D xmlManager.createQueryContext();
XmlIndexLookup xmlIndexLookup =3D null;
String idxStrategy =3D "node-element-substring-string";
XmlValue xValue =3D new XmlValue(XmlValue.STRING, "a");
int op =3D XmlIndexLookup.EQ;
xmlIndexLookup =3D xmlManager.createIndexLookup(xmlContainer, "",
"word", idxStrategy/* , xValue, op*/);
System.out.println(xmlIndexLookup.getIndex());
XmlResults res =3D xmlIndexLookup.execute(qContext);
XmlDo***ent theDoc =3D xmlManager.createDo***ent();
while(res.next(theDoc)) {
System.out.println(theDoc.getContentAsString());
}
} catch(XmlException e) {
e.printStackTrace();
// Error Handling
} finally {
try {
if(xmlContainer !=3D null) {
xmlContainer.close();
}
if(xmlManager !=3D null) {
xmlManager.close();
}
} catch(XmlException ce) {
// Exception handling
}
}
}
}
---------------------------------------------------------------------------=
-------------------------------------------------------
XQuerytest1.java
// Example XQuery
im****t com.sleepycat.db.*;
im****t com.sleepycat.dbxml.*;
public class XQueryTest1
{
public static void main ( String[] args )
throws Exception
{
XmlManager xmlManager =3D null;
XmlContainer xmlContainer =3D null;
try {
xmlManager =3D new XmlManager();
// =C4=C1=C5=D7=C0=CC=B3=CA =BF=AD=B1=E2
xmlContainer =3D
xmlManager.openContainer("/Database/testBDBXML/BDBXMLContainerNode.dbxml");
// =C4=F5=B8=AE=C4=C1=C5=D8=BD=BA=C6=AE =BB=FD=BC=BA
XmlQueryContext context =3D xmlManager.createQueryContext();
// =C4=F5=B8=AE=B9=AE
String query =3D null;
//query =3D "for $x in
collection('/Database/testBDBXML/BDBXMLContainerNode.dbxml')/dic/word\n";
query =3D "for $x in
dbxml:lookup-index('/Database/testBDBXML/BDBXMLContainerNode.dbxml',
'word')";
query +=3D "where $x/contains($x, 'able')";
//query +=3D "where $x/starts-with($x, 'a')";
//query +=3D "where matches($x, 'a')";
query +=3D "return $x";
// XQuery =C1=D8=BA=F1
XmlQueryExpression qe =3D xmlManager.prepare(query, context);
long a =3D java.lang.System.currentTimeMillis();
// XQuery =BD=C7=C7=E0 =B9=D7 =B0=E1=B0=FA =B9=DE=BE=C6=BF=C0=B1=E2
XmlResults results =3D qe.execute(context);
// System.out.println(results.size());
long b =3D java.lang.System.currentTimeMillis();
System.out.println("Elapsed time is : " + (b-a));
//=B0=E1=B0=FA=BF=A1=BC=AD =B0=AA =BE=F2=BE=EE=BF=C0=B1=E2
XmlValue value =3D null;
/* while(results.hasNext()) {
System.out.println(results.peek().asString());
value =3D results.next();
}
*/
}
finally {
try {
if ( xmlContainer !=3D null )
xmlContainer.close();
if ( xmlManager !=3D null )
xmlManager.close();
} catch ( XmlException ce ) {
// Exception handling
}
}
}
}
---------------------------------------------------------------------------=
-------------------------------------------------------
after "java IndexLookup" is no results.
why?
I am trying to do substring indexing. My listIndex looks like this:
"node-element-substring-string"
However, when I do a lookup on dbxml shell, I dun get any answer. I am
putting the node name also in my search
lookupIndex node-element-substring-string "" "word" "" "" "a"
However, it gives me no result. But, there is an entry which has the
text "a*".
Any ideas why isn't it working and how to make it work.
I don't have idea.
please help me.


|