Bumping since I posted this right before the weekend started.

On Friday, January 23, 2015 at 4:50:43 PM UTC-5, John J. Szucs wrote:
>
> I am having some difficulty with case-insensitive indexing and queries 
> using OrientDB 2.0 and the Java API.
>
> The first, and most important issue, is that when I attempt to create a 
> case-insensitive index, queries still seem to behave in a case-sensitive 
> manner.
>
> This is demonstrated in the test case below. The first query, where the 
> query value exactly matches the property value (including casing), 
> correctly returns the vertex. The second query, where the query value 
> matches the property value *except for casing*, returns an empty result 
> set.
>
> Second, how does one query by vertex type with the Java API? There were 
> some other posts in this group that suggested OrientQuery.labels() or 
> has("@class", MY_TYPE), but that fails, as demonstrated by the third query 
> in my test.
>
> Thanks in advance for any help that you might be able to offer!
>
> ===
>
> package com.mycompany.mind.test;
>
> import com.orientechnologies.orient.core.collate.OCaseInsensitiveCollate;
> import com.orientechnologies.orient.core.metadata.schema.OClass;
> import com.orientechnologies.orient.core.metadata.schema.OType;
> import com.tinkerpop.blueprints.Vertex;
> import com.tinkerpop.blueprints.impls.orient.*;
> import junit.framework.Assert;
> import org.apache.commons.io.FileUtils;
> import org.junit.Test;
>
> import java.io.File;
> import java.io.IOException;
>
> public
> class OrientDBTest
> {
>    private static final String DB_PATH="test.odb";
>    private static final String MY_INDEX="MyIndex";
>    private static final String MY_TYPE="MyType";
>    private static final String MY_PROPERTY="MyProperty";
>    private static final String MY_VALUE="MyValue";
>
>    @Test
>    public void caseInsensitiveIndex()
>    throws IOException
>    {
>       //  Open database
>       OrientGraphFactory graphFactory=this.openDatabase();
>
>       //  Create schema
>       this.buildSchema(graphFactory);
>
>       //  Insert a vertex
>       OrientGraph graph=graphFactory.getTx();
>       Vertex vertex=graph.addVertex(OrientDBTest.MY_TYPE);
>       Assert.assertNotNull("Null vertex.", vertex);
>       vertex.setProperty(OrientDBTest.MY_PROPERTY, OrientDBTest.MY_VALUE);
>       graph.commit();
>
>       //  Query with exact matching case
>       graph=graphFactory.getTx();
>       Iterable<Vertex> vertices=graph.query().has(OrientDBTest.MY_PROPERTY, 
> OrientDBTest.MY_VALUE).vertices();
>       Assert.assertNotNull("Null result from query.", vertices);
>       Assert.assertTrue("Empty result set from query.", 
> vertices.iterator().hasNext());
>       graph.shutdown();
>
> /*
>       //  Query with mismatched case
>       graph=graphFactory.getTx();
>       vertices=graph.query().has(OrientDBTest.MY_PROPERTY, 
> OrientDBTest.MY_VALUE.toLowerCase()).vertices();
>       Assert.assertNotNull("Null result from query.", vertices);
>       Assert.assertTrue("Empty result set from query.", 
> vertices.iterator().hasNext());
>       graph.shutdown();
>        */
>
>       //  Query by label
>       graph=graphFactory.getTx();
>       OrientGraphQuery oQuery= (OrientGraphQuery) graph.query();
>       vertices=oQuery.has(OrientDBTest.MY_PROPERTY, 
> OrientDBTest.MY_VALUE).has("@class", OrientDBTest.MY_TYPE).vertices();
>       Assert.assertNotNull("Null result from query.", vertices);
>       Assert.assertTrue("Empty result set from query.", 
> vertices.iterator().hasNext());
>       graph.shutdown();
>
>       //  Close database
>       graphFactory.close();
>    }
>
>    private
>    OrientGraphFactory openDatabase()
>    throws IOException
>    {
>       File dbFile=new File(OrientDBTest.DB_PATH);
>       if (dbFile.exists())
>       {
>          FileUtils.deleteDirectory(dbFile);
>       }
>       return new OrientGraphFactory("plocal:"+ OrientDBTest.DB_PATH);
>    }
>
>    private
>    void buildSchema(OrientGraphFactory graphFactory)
>    {
>       OrientGraphNoTx graph=graphFactory.getNoTx();
>       OrientVertexType 
> vertexType=graph.createVertexType(OrientDBTest.MY_TYPE);
>       OrientVertexType.OrientVertexProperty 
> property=vertexType.createProperty(OrientDBTest.MY_PROPERTY, OType.STRING);
>       property.setCollate(new OCaseInsensitiveCollate());
>       property.createIndex(OClass.INDEX_TYPE.NOTUNIQUE);
>       graph.shutdown();
>    }
> }
>
>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"OrientDB" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to