Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Eksekusiull-text-search kueri F di Amazon Neptune
Dalam kueri yang mencakup full-text-search, Neptune mencoba untuk menempatkan full-text-search panggilan dahulu, sebelum bagian lain dari kueri. Hal ini mengurangi jumlah panggilan ke OpenSearch dan dalam banyak kasus secara signifikan meningkatkan performa. Namun, ini sama sekali bukan aturan yang sama sekali bukan aturan yang sama sekali bukan hard-and-fast aturan yang sama sekali bukan aturan yang Ada situasi, misalnya, di mana PatternNode
atau UnionNode
dapat mendahului panggilan pencarian teks lengkap.
Pertimbangkan kueri Gremlin berikut ke basis data yang berisi 100.000 instans Person
:
g.withSideEffect('Neptune#fts.endpoint', '
your-es-endpoint-URL
') .hasLabel('Person') .has('name', 'Neptune#fts marcello~');
Jika kueri ini dieksekusi dalam urutan di mana langkah-langkah tersebut muncul maka 100.000 solusi akan mengalir ke OpenSearch, menyebabkan ratusan OpenSearch panggilan. Faktanya, Neptune memanggil OpenSearch dahulu dan kemudian menggabungkan hasil dengan hasil Neptune. Dalam kebanyakan kasus, ini jauh lebih cepat daripada mengeksekusi kueri dalam urutan asli.
Anda dapat mencegah pengurutan ulang eksekusi langkah kueri ini menggunakan petunjuk kueri noReordering:
g.withSideEffect('Neptune#fts.endpoint', '
your-es-endpoint-URL
') .withSideEffect('Neptune#noReordering', true) .hasLabel('Person') .has('name', 'Neptune#fts marcello~');
Dalam kasus kedua ini, langkah .hasLabel
dijalankan terlebih dulu dan langkah .has('name', 'Neptune#fts marcello~')
setelahnya.
Untuk contoh lain, pertimbangkan kueri SPARQL terhadap jenis data yang sama:
PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX neptune-fts: <http://aws.amazon.com/neptune/vocab/v01/services/fts#> SELECT ?person WHERE { ?person rdf:type foaf:Person . SERVICE neptune-fts:search { neptune-fts:config neptune-fts:endpoint '
http://your-es-endpoint.com
' . neptune-fts:config neptune-fts:field foaf:name . neptune-fts:config neptune-fts:query 'mike' . neptune-fts:config neptune-fts:return ?person . } }
Di sini sekali lagi, Neptune mengeksekusi bagian SERVICE
dari kueri terlebih dulu, dan kemudian menggabungkan hasil dengan data Person
. Anda dapat menekan perilaku ini menggunakan petunjuk kueri joinOrder:
PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX neptune-fts: <http://aws.amazon.com/neptune/vocab/v01/services/fts#> PREFIX hint: <http://aws.amazon.com/neptune/vocab/v01/QueryHints#> SELECT ?person WHERE { hint:Query hint:joinOrder "Ordered" . ?person rdf:type foaf:Person . SERVICE neptune-fts:search { neptune-fts:config neptune-fts:endpoint '
http://your-es-endpoint.com
' . neptune-fts:config neptune-fts:field foaf:name . neptune-fts:config neptune-fts:query 'mike' . neptune-fts:config neptune-fts:return ?person . } }
Sekali lagi, dalam kueri kedua, bagian-bagian dieksekusi dalam urutan kemunculan mereka dalam kueri.