선택적 검색은 문서 모음을 문서 코퍼스 유사성을 기반으로 하위 집합(샤드라고 함)으로 분할하여 전체 샤드가 아닌 더 적은 수의 샤드에 대한 검색을 가능하게 하는 대규모 텍스트 검색을 위한 분산 정보 검색(DIR) 프로젝트입니다.
프로젝트의 목표는 검색 품질에 영향을 주지 않고 검색 비용을 절감하는 것을 목표로 효율적이고 효과적인 분산 검색 시스템을 구현하는 것입니다.
대규모 컬렉션을 레코드 내용 유사성을 기반으로 하위 단위로 분해하는 방법을 "주제 기반 분할"이라고 하며, Kulkarni 등의 간행물에서는 주어진 검색어에 대해 더 적은 수의 관련 샤드를 검색하는 것을 "선택적 검색"이라고 합니다. 알.
선택적 검색은 Scala로 프로그래밍되었습니다. 비지도 클러스터링 및 분산 컴퓨팅을 위한 Apache Spark MLLib 라이브러리, 검색 및 정보 검색을 위한 Apache Solr 라이브러리를 확장합니다.
Java JDK 8 버전 "1.8.0_131"
스칼라 2.12.2
아파치 스파크 버전 2.1.1
아파치 솔러 6.6.2
스파크솔 3.3.0
아파치 메이븐 3.5.0
아파치 아이비 2.4.0
아파치 ANT 버전 1.10.1
현재 버전의 선택적 검색을 컴파일하려면 컴퓨터에서 다음 소프트웨어 목록이 실행되고 있어야 합니다.
위에 나열된 소프트웨어가 컴퓨터에서 실행되고 있는지 확인하려면 아래 명령을 사용하여 확인하세요.
java -version
scala -version
mvn -version
필요한 소프트웨어 설정을 확인한 후 소스 코드를 다운로드하고 아래 명령을 실행하십시오.
mvn clean install -DskipTests
localhost(machine)에서 선택적 검색 프로젝트를 실행하려면 Apache SolrCloud를 구성해야 합니다. 아직 구성하지 않은 경우 여기에 제공된 지침을 따르십시오. ()
SolrCloud 설정 후 선택 검색을 실행하는 방법에는 두 가지가 있습니다. 하나는 IDE에서 설정하는 것입니다. IntelliJ/Eclipse를 설정하거나 Spark 클러스터를 시작하고 작업을 실행할 수 있습니다.
git clone https://github.com/rajanim/selective-search.git
다운로드하거나 복제하십시오.App.scala
로 이동하여 마우스 오른쪽 버튼을 클릭하고 실행하세요. 'Hello World!'가 인쇄되어야 합니다. 이는 스칼라 코드가 성공적으로 컴파일되고 실행되고 있음을 확인합니다.TestTextFileParser.scala
로 이동하여 디렉터리 설정에 따라 루트 경로를 수정하고 테스트 사례를 실행합니다(마우스 오른쪽 버튼을 클릭하고 실행 옵션을 선택하세요).org.sfsu.cs.io.newsgroup.NewsgroupRunner.scala
로 이동하여 입력 디렉터리 경로를 로컬 시스템 디렉터리 경로로 수정하고 실행합니다.localhost에서 Spark 클러스터를 구성합니다.
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]
Spark 클러스터에서 선택적 검색 프로젝트를 실행합니다. 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가 'Happy Searching!'이라는 환영 메시지와 함께 시작되면 관리 UI http://localhost:8983/solr/#/
에 연결하고 컬렉션( http://localhost:8983/solr/#/~collections
으로 이동할 수 있습니다. http://localhost:8983/solr/#/~collections
컬렉션 이름을 지정하여 컬렉션을 추가하고 구성 세트를 선택합니다. data_driven_schema_configs여야 합니다. 스크린샷에 표시된 다른 키 값 쌍 입력: 여기를 클릭하세요.
클라우드 관리 UI http://localhost:8983/solr/#/~cloud
로 이동하여 컬렉션이 성공적으로 생성되었는지 확인하면 새로 생성된 컬렉션을 볼 수 있습니다.
컬렉션을 만드는 또 다른 방법은 명령줄을 이용하는 것입니다. 예제 명령 ./bin/solr create_collection -n data_driven_schema_configs -c collection_name -p portNumber -shards numShards
Selective Search
의 경우 암시 implicit routing
전략이 포함된 solr 컬렉션이 필요합니다.
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
메서드를 호출하여 Spark 컨텍스트를 얻습니다 val sc = sparkInstance.createSparkContext("class name")
org.sfsu.cs.io.text.TextFileParser.scala
에서 사용 가능한 텍스트 파서 API를 활용하여 org.sfsu.cs.document.TFDocument
에 매핑된 텍스트 문서를 얻습니다.org.sfsu.cs.io.clueweb09
에서 사용 가능한 파서를 활용하세요.org.sfsu.cs.io.csv
에서 사용 가능한 파서 api를 활용하세요. 필수 구성
동조
"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]으로 이메일을 보내주세요.