Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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



 

...