Pregunta

Estoy corriendo Titan 0.4.0 y estoy tratando de usar la última REGEX operador para el ES la cadena de búsqueda.

He creado un índice en my_key para mi ES índice denominado search.

gremlin> g.makeKey("my_key").dataType(String.class).indexed("search",Vertex.class).single().make()
==>v[82]

Luego añadir un vértice:

gremlin> v = g.addVertex(null, ["my_key":"123-abc"])
==>v[8]
gremlin> v.map
==>{my_key=123-abc}

El REGEX parece que funciona...

gremlin> g.query().has("my_key", REGEX, "[12]{2}3").vertices()
==>v[8]

...pero sólo en mi acorta "123" y "abc" de forma independiente:

gremlin> g.query().has("my_key", REGEX, "123").vertices()
==>v[8]
gremlin> g.query().has("my_key", REGEX, "abc").vertices()
==>v[8]

Sin embargo, si intento ejecutar una expresión regular que coincide con mi valor, mi vértice no se recupera (ninguno de los siguientes resultados de devolución):

gremlin> g.query().has("my_key", REGEX, "123-abc").vertices()
gremlin> g.query().has("my_key", REGEX, "123.abc").vertices()
gremlin> g.query().has("my_key", REGEX, "[0-9]+.[abc]{3}").vertices()
gremlin> g.query().has("my_key", REGEX, "123.").vertices()

Hay una manera en Titan consultar el índice de esta manera (regex w/o símbolo (token)/analizados términos)?

¿Fue útil?

Solución

La forma en que esto fue manejado en Titan hasta 0.4.0 puede ser un poco confuso, porque las cadenas son siempre acorta cuando están indexados en la indización de backend.Esto lleva a que las cadenas de caracteres "fragmentada" en palabras de un no-carta de los personajes (así como detener palabras) siendo ignorado.

En la próxima Titan versión 0.4.1 estamos haciendo esto más explícito.Eche un vistazo a la documentación actualizada:https://github.com/thinkaurelius/titan/wiki/Full-Text-and-String-Search

La esencia:Ahora se puede especificar si desea que sus cadenas indexado "como-es" o como una bolsa de palabras después del análisis.Para el caso de uso, sería el primero.También hemos enderezado de la terminología:Si usted está buscando por palabras en una cadena de caracteres que coincidan con una expresión regular, el predicado de Texto.CONTAINS_REGEX se utiliza.Si desea que toda la cadena para que coincida con una expresión, el uso de Texto.REGEX.

Titan 0.4.1 se encuentra actualmente en la fase final de la vista previa y será lanzado la próxima semana.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top