Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Data Bases > Berkely DB > How to search t...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 1 of 1 Topic 1703 of 1804
Post > Topic >>

How to search the Indexing substring?

by "hyungjun25@[EMAIL PROTECTED] " <hyungjun25@[EMAIL PROTECTED] > Jan 21, 2007 at 12:46 PM

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.
 




 1 Posts in Topic:
How to search the Indexing substring?
"hyungjun25@[EMAIL P  2007-01-21 12:46:37 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan13V112 Thu Jul 24 12:36:47 CDT 2008.