البحث الانتقائي هو مشروع لاسترجاع المعلومات الموزعة (DIR) للبحث عن النص على نطاق واسع حيث يتم تقسيم مجموعة المستندات إلى مجموعات فرعية (تُعرف باسم الأجزاء) بناءً على تشابه مجموعة المستندات، وبالتالي تمكين البحث عبر أجزاء أقل بدلاً من جميع الأجزاء.
الهدف من المشروع هو تنفيذ نظام بحث موزع يتسم بالكفاءة والفعالية دون التأثير على جودة البحث ويهدف إلى تقليل تكلفة البحث.
يُطلق على منهجية تحليل مجموعة واسعة النطاق إلى وحدات فرعية بناءً على تشابه محتوى السجلات الخاصة بها اسم "التقسيم على أساس الموضوع"، ويُطلق على البحث عبر عدد أقل من الأجزاء ذات الصلة لاستعلام بحث معين اسم "البحث الانتقائي" في منشور صادر عن Kulkarni et آل.
تمت برمجة البحث الانتقائي في Scala. إنه يوسع مكتبات Apache Spark MLLib للتجميع غير الخاضع للرقابة والحوسبة الموزعة، ومكتبات Apache Solr للبحث واسترجاع المعلومات.
جافا JDK 8 الإصدار "1.8.0_131"
سكالا 2.12.2
أباتشي سبارك الإصدار 2.1.1
أباتشي سولر 6.6.2
سبارك سولر 3.3.0
أباتشي ميفن 3.5.0
أباتشي آيفي 2.4.0
أباتشي أنت الإصدار 1.10.1
لتجميع الإصدار الحالي من البحث الانتقائي، ستحتاج إلى قائمة البرامج التالية التي تعمل على جهازك.
للتحقق من تشغيل البرامج المذكورة أعلاه على جهازك، قم بالتأكيد باستخدام الأوامر أدناه.
java -version
scala -version
mvn -version
بعد التحقق من إعداد البرامج المطلوبة، قم بتنزيل الكود المصدري وتنفيذ الأمر أدناه.
mvn clean install -DskipTests
لتشغيل مشروع البحث الانتقائي على المضيف المحلي (الجهاز)، يلزم تكوين Apache SolrCloud. إذا لم تكن قد قمت بتكوينه بالفعل، فاتبع الإرشادات المقدمة هنا: ()
بعد إعداد SolrCloud، هناك طريقتان لتشغيل البحث الانتقائي، إما إعداده على IDE - يمكن أن يكون إما IntelliJ/Eclipse أو تشغيل Spark Cluster وتنفيذ المهمة عليه.
git clone https://github.com/rajanim/selective-search.git
App.scala
، وانقر بزر الماوس الأيمن ثم قم بتشغيله. يجب أن تطبع عبارة "Hello World!" هذا يؤكد أن كود Scala قد تم تجميعه وتشغيله بنجاح.TestTextFileParser.scala
، وقم بتعديل مسار الجذر وفقًا لإعدادات الدليل لديك، وقم بتشغيل حالات الاختبار (انقر بزر الماوس الأيمن واختر خيار التشغيل)org.sfsu.cs.io.newsgroup.NewsgroupRunner.scala
، وقم بتعديل مسار دليل الإدخال إلى مسار دليل جهازك المحلي، ثم قم بالتشغيل.قم بتكوين Spark Cluster على المضيف المحلي.
spark-2.0.0-bin-hadoop2.7
)cd /Users/user_name/softwares/spark-2.0.0-bin-hadoop2.7
./sbin/start-master.sh
قم بإنشاء ملف spark-env.sh باستخدام القالب المقدم: cp ./conf/spark-env.sh.template ./conf/spark-env.sh
قم بإلحاق معلمة التكوين بنهاية الملف: 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]
قم بتشغيل مشروع البحث الانتقائي على مجموعة الشرارة. 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 &
قم بتنزيل Apache Solr بتنسيق Zip (يعمل التنفيذ الحالي على solr 6.2.1)
انتقل إلى المحطة وانتقل إلى المسار الذي يوجد به دليل solr unzip.
ابدأ تشغيل solr في الوضع السحابي
./bin/solr start -c -m 4g
بمجرد أن تبدأ solr برسالة ترحيب باسم "بحث سعيد!"، يجب أن تكون قادرًا على الاتصال بواجهة المستخدم الإدارية الخاصة به http://localhost:8983/solr/#/
، وانتقل إلى المجموعات: http://localhost:8983/solr/#/~collections
أضف مجموعة عن طريق إعطاء اسم المجموعة، واختر مجموعة التكوين، ويجب أن تكون data_driven_schema_configs. مدخلات زوج القيمة الرئيسية الأخرى كما هو موضح هنا في لقطة الشاشة: انقر هنا
تأكد من إنشاء المجموعة بنجاح من خلال الانتقال إلى واجهة مستخدم مسؤول السحابة http://localhost:8983/solr/#/~cloud
ويجب أن تكون قادرًا على رؤية المجموعة التي تم إنشاؤها حديثًا
هناك طريقة أخرى لإنشاء مجموعة وهي عبر سطر الأوامر. مثال للأمر ./bin/solr create_collection -n data_driven_schema_configs -c collection_name -p portNumber -shards numShards
بالنسبة Selective Search
، نحتاج إلى مجموعة solr مع استراتيجية 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
اتبع الخطوات المذكورة أدناه لتنفيذ (تشغيل) البحث الانتقائي لأي مجموعة بيانات أخرى (مخصصة/محددة).
org.sfsu.cs.main.SparkInstance
جديد واستدعاء طريقة createSparkContext
val sc = sparkInstance.createSparkContext("class name")
org.sfsu.cs.io.text.TextFileParser.scala
للحصول على المستندات النصية المعينة إلى org.sfsu.cs.document.TFDocument
org.sfsu.cs.io.clueweb09
org.sfsu.cs.io.csv
التكوينات المطلوبة
ضبط
"spark.driver.maxResultSize=2000"
ولا يمكن أن يتجاوز 2048./bin/solr start -c -m 4g
https://issues.apache.org/jira/browse/SOLR-4114
الإصلاح: تأكد من أن maxShardsPerNode
يساوي numShards
بناءً على عدد العقد المتاحة. إذا كانت لديك أسئلة إضافية تتعلق بالتنفيذ أو النتائج التجريبية أو المعايير أو استخدام Selective-Search
، فيسعدنا تقديم المساعدة. يرجى إرسال بريد إلكتروني إلى [email protected]