THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
PlantUML |
---|
() User -down-> [User Data Region] : PUTs [User Data Region] ..> [Bucket 1] [Bucket 1] -down-> [Async Queue Bucket 1] node LuceneIndex { [Async Queue Bucket 1] -down-> [AEQ listener processes events into index documents]:Batch Write [AEQ listener processes events into index documents] -down-> [RegionDirectory1] [RegionDirectory1] -down-> [file region bucket 1] } [User Data Region] ..> [Bucket 2] [Bucket 2] -down-> [Async Queue Bucket 2] node LuceneIndex { [Async Queue Bucket 2] -down-> [AEQ listener processes events into index documents]:Batch Write [AEQ listener processes events into index documents] -down-> [RegionDirectory2] [RegionDirectory2] -down-> [file region bucket 2] } |
Class Diagram
PlantUML |
---|
@startuml
hide empty members
class LuceneServiceImpl
interface LuceneIndex
class LuceneIndexForPartitionedRegion
interface RepositoryManager
class PartitionedRepositoryManager {
Manages an IndexRepository for each bucket
}
package "One For Each Bucket" {
interface IndexRepository {
Operates on a the lucene index: put, delete query
}
class IndexRepositoryImpl
interface LuceneSerializer {
Converts a user object into a lucene document
}
class RegionDirectory {
Implements Lucene's directory interface but writes to geode regions
}
class IndexWriter <<Lucene Class>>
interface Directory <<Lucene Class>>
class FileSystem
class BucketTargetingMap
class BucketRegion
}
LuceneIndexForPartitionedRegion --> AsyncEventQueue: creates
AsyncEventQueue o-- LuceneEventListener
LuceneEventListener o-- RepositoryManager
LuceneServiceImpl *-- LuceneIndex
LuceneIndex <|-- LuceneIndexForPartitionedRegion
LuceneIndexForPartitionedRegion *-- RepositoryManager
RepositoryManager <|-- PartitionedRepositoryManager
PartitionedRepositoryManager "1" *-- "many" IndexRepository
IndexRepository <|-- IndexRepositoryImpl
IndexRepositoryImpl *-- IndexWriter
IndexRepositoryImpl o-- LuceneSerializer
IndexWriter *-- RegionDirectory
RegionDirectory --|> Directory
RegionDirectory *-- FileSystem
FileSystem *-- BucketTargetingMap
BucketTargetingMap *-- BucketRegion
@enduml |
Processing Queries
PlantUML |
---|
() User -down-> [LuceneQuery] : fields, Analyzer, query strings, or Query [LuceneQuery] -down-> [User Data Region]: call search() [User Data Region] -down-> [Function Execution] [Function Execution] -down-> [Bucket 1] [Bucket 1] -down-> [RegionDirectory for bucket 1] [RegionDirectory for bucket 1] ..> [Bucket 1] : TopDocs, ScoreDocs [Bucket 1] ..> [Function Execution] : score, key [Function Execution] -down-> [Bucket 2] [Bucket 2] -down-> [RegionDirectory for bucket 2] [RegionDirectory for bucket 2] ..> [Bucket 2] : TopDocs, ScoreDocs [Bucket 2] ..> [Function Execution] : score, key |
...