質問

ティチン0.4.0を実行していて、ES文字列検索に最新のREGEX演算子を使用しようとしています。

my_keyという名前のMy 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]
.

しかし、私のフル値と一致する正規表現を実行しようとすると、私の頂点は取得されません(以下の戻り結果のどれも):

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

この方法でインデックスを照会するためのTitanにはありますか(正規表現w / oトークン化/分析用語)?

役に立ちましたか?

解決

これが0.4.0までのティンの中で扱われた方法は、外部インデックス付けバックエンドで索引付けされたときに常にトークン化されているため、少し混乱を扱うことができます。これにより、文字列が無視されていない文字以外の文字(および停止単語)に「チャンク」されている文字列がつながります。

今後のタイタン0.4.1リリース我々はこれ以上明確にしています。更新されたドキュメントを見てください。 https://github.com/thinkaurelius/titan/wiki/Full. -text-and-string-search

gist:あなたの文字列を "AS-IS"に索引付けしたいか、分析後の単語の袋として指定できるようになりました。ユースケースの場合は前者になります。私達はまたその用語をまっすぐにしていました:正規表現と一致する文字列内の単語を探しているならば、述語text.contains_regexが使用されます。文字列全体を式に一致させたい場合は、Text.Regexを使用してください。

Titan 0.4.1は現在最終的なプレビューで、来週発表されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top