2016-04-13 43 views
1

OrientDB ve birlikte gelen gremlin konsolunu kullanıyorum.OrientDB: gremlin kullanarak metin arama

Metin özelliğinde bir deseni aramaya çalışıyorum. EbodyText özelliği ile e-posta köşeleri var. Sorun, SQL gibi komut ve Gremlin dili ile sorgulama sonucunun oldukça farklı olmasıdır.

ben gibi sorgu gibi SQL kullanıyorsanız:

select count(*) from Email where eBodyText like '%Syria%'

o 24.

döndürür Ama gibi cin konsolda sorgulamak durumunda:

g.V.has('eBodyText').filter{it.eBodyText.matches('.*Syria.*')}.count()

o hiçbiri döndürmez.

Farklı bir anahtar kelime 'memo' ile aynı sorguları, SQL tarafından 161, ancak gremlin tarafından 20 döndürür.

Bu neden böyle davranıyor? Gremlin komutunun sözdizimi ile ilgili bir sorun var mı? Gremlin'de metin aramak için daha iyi bir yolu var mı?

Python sürücüsü 'pyorient' kullanan yükleme komut dosyasında özellikleri ayarlama sorunu olabilir. Python script used to upload the dataset

Yardımlarınız için teşekkürler. enter image description here

cevap

3

enter image description here

Ben 2.1.15 ile denedim ve hiçbir sorun yoktu.

Bunlar kayıtlar.

enter image description here

enter image description here

EDITED

enter image description here

enter image description here

benim DB için bazı köşelerden eklendi ve şimdi count() 11 olduğunu

SORGU:

g.V.has('eBodyText').filter{it.eBodyText.contains('Syria')}.count() 

ÇIKIŞ:

==>11 

yardımcı olur Umut.

+0

Bu ilginç. Benim sürümüm 2.1.13'tür, ama bence sorun bu değil. Metin kodlama sorunu mu olmalı? ya da uzunluk belki? – NeoJi

+0

Yeni yükledim ve 2.1.15 ile aynı sorunu yaşıyorum. Daha fazla bilgiye ihtiyacın olursa lütfen bildirin ve teşekkürler ~ !! – NeoJi

+0

@NeoJi Aşağıdaki sorguların tüm sonuçlarını paylaşabilirsiniz eBodyText 'e% eposta%' ve gVhas ('eBodyText') gibi e-postalar arasından seçim yapın filtre {it.eBodyText.matches ('. * Syria. *') }? –