Mən Lucene-dən verilənlər bazasında saxlanacaq elementlərdən açar sözlər çıxarmaq və müvafiq domen obyektlərinə işarə edən “açar söz uzantısı” adlandırdığım obyektləri saxlamaq üçün istifadə etdim. Bu, domen obyektlərini açar sözlə tapmaq imkanı verdi (həmçinin köklənməyə imkan verir) və açar sözlərlə bağlı narahatlıqları ayırdı. Verilənlər bazası böyük statik verilənlər toplusundan (USDA qida qidası verilənlər bazası) qurulmuşdur, ona görə də işləmə zamanı dəyişikliklərdən narahat olmağa ehtiyac duymadım. Beləliklə, bu həll indiki formada məhduddur ...
Həllin birinci hissəsi bəzi mətn götürən və hər ikisini açar sözləri və müvafiq gövdələri (Lucenenin 'Qartopu' kökündən istifadə edərək) xəritəyə çıxaran kiçik bir kod parçası yazmaq idi. Siz bundan verilənlər bazasında saxladığınız bəzi domen obyektlərindən açar sözləri/gövdələri çıxarmaq üçün istifadə edirsiniz. Mən orijinal açar sözləri ətrafımda saxladım ki, edilən axtarışlar üzrə bir növ statistika yarada bildim.
İkinci hissə, gövdələri massiv kimi, müvafiq açar sözləri isə başqa massiv kimi saxlayan və açar sözlərə malik olan müvafiq domen obyektlərinə göstərici olan “açar söz uzantıları” adlandırdığım obyektləri qurmaq idi (massivlərdən istifadə etdim, çünki onlar daha asan işləyirlər). DB4O). Mən həmçinin KeywordExtension sinifimi xüsusi domen obyektlərinin növünə uyğun olaraq alt siniflərə ayırdım - buna görə də, məsələn, mən 'Nutrient' domen obyektini və müvafiq 'NutrientKeywordExtension' obyektini saxlayırdım.
Üçüncü hissə istifadəçinin daxil etdiyi axtarış mətnini toplamaq, gövdələri çıxarmaq üçün yenidən stemmerdən istifadə etmək və həmin gövdələrlə NutrientKeywordExtension obyektlərini axtarmaqdır. Daha sonra bu uzantıların işarə etdiyi Qida obyektlərini tuta və nəhayət onları axtarış nəticələri kimi təqdim edə bilərsiniz.
Dediyim kimi, verilənlər bazam statik idi - o, proqram ilk dəfə işlədiyi zaman yaradılmışdır. Dinamik verilənlər bazasında qida maddələrini və müvafiq açar söz uzantılarını sinxronlaşdırmaqdan narahat olmalısınız. Bir həll, domen obyektlərinizdə bu materialın olmasına etiraz etmirsinizsə, qida və qida açar sözünün genişləndirilməsini bir sinifdə birləşdirmək olardı (bunu bəyənmirəm). Əks halda, hər dəfə domen obyektlərinizi yaratdığınız/redaktə etdiyiniz/sildiyiniz zaman açar söz uzantılarını nəzərə almalısınız.
Ümid edirəm ki, bu məhdud nümunə kömək edir.
person
Sam Stainsby
schedule
30.04.2011