Pertanyaan Ambil token yang dianalisis dari dokumen ElasticSearch


Mencoba mengakses teks yang dianalisis / di-token dalam dokumen ElasticSearch saya.

Saya tahu Anda bisa menggunakan Analisis API untuk menganalisis teks arbitrer menurut modul analisis Anda. Jadi saya dapat menyalin dan menempelkan data dari dokumen saya ke dalam Analyze API untuk melihat bagaimana itu disahkan.

Ini tampaknya memakan waktu yang tidak perlu. Apakah ada cara untuk menginstruksikan ElasticSearch untuk mengembalikan teks tokenized dalam hasil pencarian? Saya telah memeriksa dokumen dan tidak menemukan apa pun.


32
2017-11-15 19:28


asal


Jawaban:


Silahkan lihat jawaban lain ini: elasticsearch - Mengembalikan token bidang. Sayangnya itu perlu untuk menganalisa kembali on the fly konten dari bidang Anda menggunakan skrip yang disediakan.
Seharusnya mungkin untuk menulis plugin untuk mengekspos fitur ini. Idenya adalah menambahkan dua titik akhir ke:

  • memungkinkan untuk membaca lucene TermsEnum seperti solr PersyaratanKomponen tidak, berguna untuk membuat saran otomatis juga. Perhatikan bahwa itu tidak akan per dokumen, hanya setiap istilah pada indeks dengan frekuensi dan frekuensi dokumen (berpotensi mahal dengan banyak istilah unik)
  • memungkinkan untuk membaca vektor jangka jika diaktifkan, seperti solr TermVectorComponent tidak. Ini akan menjadi per dokumen tetapi membutuhkan untuk menyimpan vektor jangka (Anda dapat mengkonfigurasinya dalam pemetaan Anda) dan memungkinkan juga untuk mengambil posisi dan offset jika diaktifkan.

14
2017-11-15 22:20



Pertanyaan ini sudah lama, tapi mungkin saya pikir jawaban tambahan diperlukan.

Dengan ElasticSearch 1.0.0 the Istilah Vector API ditambahkan yang memberi Anda akses langsung ke token ElasticSearch di bawah tenda berdasarkan dokumen. Dokumen API tidak terlalu jelas tentang ini (hanya disebutkan dalam contoh), tetapi untuk menggunakan API Anda harus terlebih dahulu menunjukkan di definisi pemetaan Anda ingin menyimpan vektor jangka dengan term_vector properti di setiap bidang.


15
2018-06-24 15:35



Anda mungkin ingin menggunakan scripting, tetapi server Anda harus memiliki scripting yang diaktifkan.

curl 'http://localhost:9200/your_index/your_type/_search?pretty=true' -d '{
    "query" : {
        "match_all" : { }
    },
    "script_fields": {
        "terms" : {
            "script": "doc[field].values",
            "params": {
                "field": "field_x.field_y"
            }
        }
    }
}'

Pengaturan default untuk mengizinkan skrip tergantung pada versi pencarian elastis, jadi silakan periksa dari dokumentasi resmi.


5
2017-08-03 21:33