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")
|
|
ni...@...
I should point out that I am using a build from master 0.2.0. |
|
Nigel Brown <nigel...@...>
The key here is not to used two indices (janus will pick one) but to use TEXTSTRING. SeeĀ http://docs.janusgraph.org/latest/index-parameters.html#_full_text_and_string_search |
|