Энэ блогоос хайх

Thursday 19 May 2011

Хайлтын системийн үндэс - Lucene үргэлжлэл

Lucene-ы зүрхэнд Index/индекс оршино. Энэ класс нь тодорхой бүтцийн дагуу зохион байгуулагдсан файлуудыг агуулсан файл системийн директороос өгөгдлөө авна. 

Эхлээд өгөгдлөө индекслэх ба, дараа нь тэр индекс дээр хайлт хийгдээд хайлтын үр дүнг гаргаж ирдэг. Индексийг үүсгэхийн тулд IndexWriter  объектыг ашигладаг. Индекс дээр хайлтыг хийхийн тулд IndexSearcher объектыг ашигладаг.

Хайлт өөрөө IndexSearcher.search() руу дамжуулагдаж буй Query объект байх ба IndexSearcher.search() нь Document объектуудын векторыг агуулсан Hits объектыг үр дүндээ гаргаж өгнө.

Document объектууд нь индекст хадгалагддаг ба тэдгээрийг индекслэх ажил нь таны ажил байх болно. Өөрөөр хэлбэл ямар өгөгдлийг индекс рүү оруулахыг сонгож өгөх хэрэгтэй ба тэдгээрийг Documents руу хөрвүүлнэ. Documents-ыг үүсгэхийн тулд өгөгдлийн файлуудыг  (өгөгдлийн баазын оролт ч юмуу өөр бусдаас) уншаад өгөгдлүүдийг жижиг хэсгүүдэд хуваагаад, тэр жижиг хэсгүүдийг Document дээр Field объект( name/value-нэр/өгөгдлийн утга) байдлаар хадгална. Ингээд Document-ыг үүсгэх ажил дуусвал түүнийг IndexWriter-ыг ашиглаад индекс рүү бичнэ. 

Lucene нь Query объектыг үүсгэхэд тусалдаг QueryParser гэх хэрэгслийг агуулдаг.

Дээр хэлсэн зүйлүүдийг эргэн харвал Lucene нь индекслэх, хайх, үр дүнг гаргах зэрэг үйлдлүүдийг хийдэг байх нь. Харин дараах зүйлүүдийг бидэнд хийж өгдөггүй ба тэдгээр нь бидний хийх ёстой ажил байх болно.
  • процессыг удирдах (индекслэх болон хайхын тулд обьектуудыг эхлүүлэх болон тэдгээрийг хамтад нь гогцоодон авах )
  • өгөгдлийн файлуудыг сонгох
  • өгөгдлийн файлуудыг фарслах
  • хэрэглэгчээс хайх тэмдэгтийг авах
  • хэрэглэгчид үр дүнг гаргаж үзүүлэх 
За одоог хүртэл ерөнхий ойлголтыг тайлбарлалаа. Дараагийн бичлэгт хэрхэн инстоол хийх болон жишээг оруулнаа.

No comments: