Pencarian selektif adalah proyek Pengambilan Informasi Terdistribusi (DIR) untuk pencarian teks skala besar di mana kumpulan dokumen dipartisi menjadi subset (dikenal sebagai pecahan) berdasarkan kesamaan korpus dokumen, sehingga memungkinkan pencarian pada pecahan yang lebih sedikit, bukan seluruh pecahan.
Tujuan dari proyek ini adalah untuk menerapkan sistem pencarian terdistribusi yang efisien dan efektif tanpa mempengaruhi kualitas pencarian dan bertujuan untuk mengurangi biaya pencarian.
Metodologi penguraian koleksi berskala besar ke dalam subunit berdasarkan kesamaan konten rekamannya disebut sebagai “Partisi Berbasis Topik”, dan penelusuran pada pecahan relevan yang lebih sedikit untuk kueri penelusuran tertentu disebut sebagai “Penelusuran Selektif” dalam publikasi oleh Kulkarni et al.
Pencarian Selektif diprogram dalam Scala. Ini memperluas perpustakaan Apache Spark MLLib untuk pengelompokan tanpa pengawasan dan komputasi terdistribusi, perpustakaan Apache Solr untuk Pencarian dan Pengambilan Informasi.
Java JDK 8 versi "1.8.0_131"
Skala 2.12.2
Apache Spark versi 2.1.1
Apache solr 6.6.2
Spark-Solr 3.3.0
Apache Maven 3.5.0
Apache Ivy 2.4.0
Apache ANT versi 1.10.1
Untuk mengkompilasi versi pencarian selektif saat ini, Anda memerlukan daftar perangkat lunak berikut yang berjalan di mesin Anda.
Untuk memverifikasi perangkat lunak yang tercantum di atas berjalan di mesin Anda, konfirmasikan dengan perintah di bawah ini.
java -version
scala -version
mvn -version
Setelah verifikasi pengaturan perangkat lunak yang diperlukan, unduh kode sumber dan jalankan perintah di bawah ini.
mvn clean install -DskipTests
Untuk menjalankan proyek pencarian selektif di localhost (mesin), Apache SolrCloud perlu dikonfigurasi. Jika Anda belum mengonfigurasinya, ikuti petunjuk yang diberikan di sini: ()
Setelah pengaturan SolrCloud, ada dua cara untuk menjalankan pencarian selektif, yaitu mengaturnya di IDE—bisa berupa IntelliJ/Eclipse atau meluncurkan Spark Cluster dan menjalankan pekerjaan di dalamnya.
git clone https://github.com/rajanim/selective-search.git
App.scala
, klik kanan dan jalankan. Ini harus mencetak 'Halo Dunia!' Ini mengonfirmasi bahwa kode scala telah dikompilasi dan dijalankan dengan sukses.TestTextFileParser.scala
, ubah jalur root sesuai pengaturan direktori Anda, jalankan kasus pengujian (klik kanan dan pilih opsi jalankan)org.sfsu.cs.io.newsgroup.NewsgroupRunner.scala
, ubah jalur direktori masukan ke jalur direktori mesin lokal Anda, lalu jalankan.Konfigurasikan Spark Cluster di localhost.
spark-2.0.0-bin-hadoop2.7
)cd /Users/user_name/softwares/spark-2.0.0-bin-hadoop2.7
./sbin/start-master.sh
buat file spark-env.sh menggunakan templat yang disediakan: cp ./conf/spark-env.sh.template ./conf/spark-env.sh
tambahkan parameter konfigurasi ke akhir file: echo "export SPARK_WORKER_INSTANCES=4" >> ./conf/spark-env.sh
./sbin/start-slaves.sh <master_url> [master url: available or seen on spark web-ui after master is started, at: localhost:8080]
Jalankan proyek pencarian selektif di cluster percikan. nohup ./bin/spark-submit --master spark://RajaniM-1159:7077 --num-executors 2 --executor-memory 8g --driver-memory 12g --conf "spark.rpc.message.maxSize=2000" --conf "spark.driver.maxResultSize=2000" --class com.sfsu.cs.main.TopicalShardsCreator /Users/rajanishivarajmaski/selective-search/target/selective-search-1.0-SNAPSHOT.jar TopicalShardsCreator -zkHost localhost:9983 -collection word-count -warcFilesPath /Users/rajani.maski/rm/cluweb_catb_part/ -dictionaryLocation /Users/rajani.maski/rm/spark-solr-899/ -numFeatures 25000 -numClusters 50 -numPartitions 50 -numIterations 30 &
Unduh Apache Solr sebagai zip (implementasi saat ini berjalan pada solr 6.2.1)
Masuk ke terminal dan arahkan ke jalur tempat direktori solr unzip berada.
Mulai solr dalam mode cloud
./bin/solr start -c -m 4g
Setelah Anda memulai solr dengan pesan selamat datang sebagai 'Selamat Mencari!', Anda seharusnya dapat terhubung ke UI adminnya http://localhost:8983/solr/#/
, navigasikan ke koleksi: http://localhost:8983/solr/#/~collections
Tambahkan koleksi dengan memberi nama koleksi, pilih config set, seharusnya data_driven_schema_configs. Input pasangan nilai kunci lainnya seperti yang terlihat di sini pada tangkapan layar : klik di sini
Konfirmasikan apakah koleksi berhasil dibuat dengan menavigasi ke antarmuka admin cloud http://localhost:8983/solr/#/~cloud
dan Anda akan dapat melihat koleksi yang baru dibuat
Pendekatan lain untuk membuat koleksi adalah melalui baris perintah. Contoh perintah ./bin/solr create_collection -n data_driven_schema_configs -c collection_name -p portNumber -shards numShards
Untuk Selective Search
, kami memerlukan koleksi solr dengan strategi implicit routing
.
http://localhost:8983/solr/admin/collections?action=CREATE&name=NewsGroupImplicit&numShards=20&replicationFactor=1&maxShardsPerNode=20&router.name=implicit&shards=shard1,shard2,shard3,shard4,shard5,shard6,shard7,shard8,shard9,shard10,shard11,shard12,shard13,shard14,shard15,shard16,shard17,shard18,shard19,shard20&collection.configName=data_driven_schema_configs&router.field=_route_
http://localhost:8983/solr/banana/src/index.html#/dashboard
Ikuti langkah-langkah yang tercantum di bawah ini untuk menjalankan (menjalankan) pencarian selektif untuk kumpulan data (khusus/spesifik) lainnya.
org.sfsu.cs.main.SparkInstance
baru dan memanggil metode createSparkContext
val sc = sparkInstance.createSparkContext("class name")
org.sfsu.cs.io.text.TextFileParser.scala
untuk mendapatkan dokumen teks yang dipetakan ke org.sfsu.cs.document.TFDocument
org.sfsu.cs.io.clueweb09
org.sfsu.cs.io.csv
Konfigurasi yang diperlukan
Penyetelan
"spark.driver.maxResultSize=2000"
yang tidak dapat melebihi 2048./bin/solr start -c -m 4g
https://issues.apache.org/jira/browse/SOLR-4114
Perbaikan : Pastikan maxShardsPerNode
sama dengan numShards
berdasarkan jumlah node tersedia. Jika Anda memiliki pertanyaan tambahan terkait penerapan, hasil eksperimen, tolok ukur, atau penggunaan Selective-Search
, dengan senang hati membantu. Silakan email ke [email protected]