Is textRegex using search backends?


ni...@...
 

I have a text and string index in a graph and if I do a direct query on either of them, I can search for multiple tokens. (See below)

A textRegex query does not seem to use either of these, it returns slower and I can only search within tokens. How is the meant to work?

How do I make textRegex use the search index?
How do I debug the way janus finds the index backends?

gremlin> graph.indexQuery("process_nameTextKey", "v.*:*program file*").vertices().iterator().take(10).collect{it.getElement()}.collect{it.value('process_name')}

==>C:\Program Files\pdfViewer\pdfViewer.exe

==>C:\\Program Files\\Synaptics\\SynTP\\SynTPEnh.exe

==>C:\\Program Files\\SOLIDWORKS Corp\\eDrawings X64 Edition\\eDrawings.exe

==>C:\\Program Files (x86)\\nxlog\\nxlog.exe

==>C:\\Program Files\\CCleaner\\CCleaner.exe

==>C:\\Program Files (x86)\\CyberLink\\YouCam6\\CLWFLService6.exe

==>C:\\Program Files (x86)\\airtel\\UpdateDog\\LiveUpd.exe

==>C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe

==>C:\\Program Files (x86)\\Adobe\\Reader 10.0\\Reader\\reader_sl.exe

==>C:\\Program Files (x86)\\Dell\\VideoStage\\UserAgent.exe

gremlin> graph.indexQuery("process_nameStringKey", "v.*:*program file*").vertices().iterator().take(10).collect{it.getElement()}.collect{it.value('process_name')}

==>C:\Program Files\pdfViewer\pdfViewer.exe

==>C:\\Program Files\\Synaptics\\SynTP\\SynTPEnh.exe

==>C:\\Program Files\\SOLIDWORKS Corp\\eDrawings X64 Edition\\eDrawings.exe

==>C:\\Program Files (x86)\\nxlog\\nxlog.exe

==>C:\\Program Files\\CCleaner\\CCleaner.exe

==>C:\\Program Files (x86)\\CyberLink\\YouCam6\\CLWFLService6.exe

==>C:\\Program Files (x86)\\airtel\\UpdateDog\\LiveUpd.exe

==>C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe

==>C:\\Program Files (x86)\\Adobe\\Reader 10.0\\Reader\\reader_sl.exe

==>C:\\Program Files (x86)\\Dell\\VideoStage\\UserAgent.exe

gremlin> g.E().has('process_name', textRegex( 'program file')).properties()

gremlin> g.E().has('process_name', textRegex( '.*program file.*')).properties()

gremlin> g.E().has('process_name', textContainsRegex( '.*program file.*')).properties()

gremlin> mgmt = graph.openManagement()

==>org.janusgraph.graphdb.database.management.ManagementSystem@281b2dfd

gremlin> mgmt.getGraphIndex('process_nameStringKey').getProperties()

==>unique=false

==>indexedElement=interface org.janusgraph.core.JanusGraphVertex

==>class=class org.janusgraph.graphdb.database.management.JanusGraphIndexWrapper

==>fieldKeys=[Lorg.janusgraph.core.PropertyKey;@1fb2eec

==>mixedIndex=true

==>baseIndex=process_nameStringKey

==>backingIndex=search

==>compositeIndex=false

gremlin> mgmt.getGraphIndex('process_nameTextKey').getProperties()

==>unique=false

==>indexedElement=interface org.janusgraph.core.JanusGraphVertex

==>class=class org.janusgraph.graphdb.database.management.JanusGraphIndexWrapper

==>fieldKeys=[Lorg.janusgraph.core.PropertyKey;@22f02996

==>mixedIndex=true

==>baseIndex=process_nameTextKey

==>backingIndex=search

==>compositeIndex=false


I used this to created the indices...

mgmt.buildIndex(s"${k}TextKey", classOf[Vertex]).addKey(u, Mapping.TEXT.asParameter()).buildMixedIndex("search")
mgmt.buildIndex(s"${k}StringKey", classOf[Vertex]).addKey(u, Mapping.STRING.asParameter()).buildMixedIndex("search")



Join janusgraph-users@lists.lfaidata.foundation to automatically receive all group messages.