문제

나는 실행하는 타이탄 0.4.0 고 사용하려고 최신 REGEX 운영자를 위해 ES 문자열을 검색합니다.

내가 만들어진에 인덱스 my_key 내 ES 이라는 인덱스 search.

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

다음에 추가 꼭지점:

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

REGEX 작동하는 것 같다...

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

...하지만 나는 토큰화 "123""abc" 독립적으로:

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

까지,남녀노소 누구나 좋아합니다를 실행하려는 시도가 일치하는 정규 표현식을 나의 가치를,나의 꼭지점이 검색되지 않음(none 의 아래에 결과를 반환):

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()

는 방법이 있에서 타이탄를 쿼리하는 인덱스에서 이 방법(regex w/o 토큰화/분석한 측면)?

도움이 되었습니까?

해결책

방법 이에 처리 티탄까지 0.4.0 수 있는 조금 복잡하기 때문에,문자열은 항상된 때에는 인덱스에서는 외부 인덱싱 있습니다.이 문자열에는"청크"들어가 아닌 문자(뿐만 아니라용어)되는 무시됩니다.

에서 타이탄 0.4.1 릴리스 우리는 더 분명하게 명시되어 있습니다.보 업데이트 문서:https://github.com/thinkaurelius/titan/wiki/Full-Text-and-String-Search

요점:을 지정할 수 있는지 여부를 당신이 당신의 문자열을 인덱싱"as-is"또는 가방의 단어를 분석 후에.에 대한 사용할 경우,그것은 것임을 지지 않습니다.우리는 또한 정리하고 용어:당신이 찾고있는 단어는 문자열에서 일치 정규식,술어 텍스트입니다.CONTAINS_REGEX 이 사용됩니다.당신이 원하는 경우 전체 문자열을 맞는 표현 사용하여 텍스트입니다.REGEX.

Titan0.4.1 은 현재에서 최종 미리보기와 다음 주에 발표 될 예정이다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top