0
lucene indexing(v6.1)を高速化するために、Slick 3.1(Scala)のデータを分割して分割したい異なるデータセットをスレッドに渡して、インデックス処理を高速化します。私はMySQLからデータをフェッチするためにScalaに次のコードを書いています。Slick 3.1(Scala)のデータを4つの部分に分割するには
class NotesService(val databaseService: DatabaseService)(implicit executionContext: ExecutionContext) extends NoteEntityTable {
import databaseService._
import databaseService.driver.api._
import com.github.t3hnar.bcrypt._
def getNotes(): Future[Seq[NoteEntity]] = db.run(notes.result)
}
case class NoteEntity(id: Option[Long] = None, title: String, teaser: String, description: String)
コードNotesService
class NotesService(val databaseService: DatabaseService)(implicit executionContext: ExecutionContext) extends NoteEntityTable {
import databaseService._
import databaseService.driver.api._
import com.github.t3hnar.bcrypt._
def getNotes(): Future[Seq[NoteEntity]] = db.run(notes.result)
}
のための私が使用したNotesServiceからデータをフェッチするには、次の行にここで
def setI = {
val NUM_THREADS = Runtime.getRuntime().availableProcessors()
val IndexStoreDir = Paths.get("/var/www/html/Index")
val analyzer = new StandardAnalyzer()
val writerConfig = new IndexWriterConfig(analyzer)
writerConfig.setOpenMode(OpenMode.CREATE_OR_APPEND)
writerConfig.setRAMBufferSizeMB(500)
.setMaxBufferedDocs(2)
.setMergeScheduler(new ConcurrentMergeScheduler())
val directory = FSDirectory.open(IndexStoreDir)
var writer = new IndexWriter(directory, writerConfig)
val threads = Array.ofDim[IndexTh](NUM_THREADS)
val notes = notesService.getNotes()
for (i <- 0 until NUM_THREADS){
threads(i) = new IndexTh(notesService, writer)
//here on this line I want to pass different sets of data to thread.
}
for (i <- 0 until NUM_THREADS) {
threads(i).start()
println("Thread " + i + " Started!")
}
}
を:
私は分割することができますどのようにthreads(i) = new IndexTh(notesService, writer)
notesからのデータthreaに渡すサービスd? ノート内のデータを複数のチャンクに分割するにはどうすればよいですか? データをこのようにしたいとします。
notesService.getNotes()
が20000行のデータを取得するとします。今度は、これらの行を4000行の5つの部分に分割して、4000行ごとのデータを異なるスレッドに渡すことができます。
を?改ページ? – Roman
複数のスレッドに異なるデータセットを渡したい(メインデータセットを分割する) – Sujit
私はまだ質問が何であるか完全に理解していません。多分あなたが必要とする出力の例が役に立つでしょう。 – Roman