Apache Lucene - іздеуді оңтайландыру

SQL Server дерекқорын пайдаланатын Java бағдарламасында (Spring пайдалану арқылы) веб-қосымшаны әзірлеп жатырмын. Apache Lucene бағдарламасын веб-қолданбам үшін іздеу мүмкіндігін іске асыру үшін қолданамын. Apache Lucene арқылы, іздеуді орындамас бұрын, атаулардың индексін жасаймын. Мен алдымен дерекқордан барлық тақырыптардың тізімін алу арқылы жасаймын. Содан кейін мен тізімдердің тізбегін айналдырып, олардың әрқайсысын индекске қосамын. Бұл пайдаланушы кез келген нәрсені іздеген сайын орын алады.

Индексті құрудың неғұрлым тиімді, тиімді әдісі бар-жоғын білгім келеді ме? Мен өзімнің жолым өте тиімсіз екенімді білемін және тақырыптардың тізімі өте ұзақ болғанда аяқтау үшін көп уақытты алады.

Кез келген ұсыныс жоғары бағаланады.

Рахмет

0
Неге сіз жаңа индекс жасайсыз, оны әрдайым сақтап қойдыңыз? Сіз оны мезгіл-мезгіл жаңарта аласыз.
қосылды автор aalku, көзі

6 жауаптар

Lucene қызметін оңтайландырмас бұрын: SQL Server бұрыннан бар толық мәтінді іздеу мүмкіндігінде . Егер бұл сіздің пайдалану жағдайыңызды жабса, оны қолданыңыз. SQL Server іздеу индексін дерекқормен синхрондауда ұстауды шешкендіктен, бұл ең оңай жолы.

Егер SQL Server толық мәтінді іздеу сіздің пайдалану жағдайыңызға сай болмаса, онда сіздің қолданбаңыз өзіңіздің іздеу индексін жасап, оны дерекқормен синхрондауға тиіс. Мұны істеу үшін сіз:

  • Қолданба іске қосылғанда іздеу индексін жасаңыз/жаңартыңыз
  • бағдарлама кірістірсе, тақырыпты жаңартса немесе жоятын болса, іздеу индексін жаңартыңыз.

Lucene іздеу индексін сақтайтын жерде икемді. Сіз оны файлдық жүйеңіздегі немесе дерекқордағы каталогта сақтай аласыз (немесе өзіңіздің сақтау провайдеріңізді жазыңыз). Мен оны файлдық жүйеде сақтауды ұсынамын, себебі өнімділік дерекқорда сақтағаннан гөрі әлдеқайда жақсы.

Егер индекстеу үшін тым көп тақырыптар болмаса, әр қолданылатын кезде жадында сақтайтын жад ішіндегі іздеу индексін қолдануға болады.

0
қосылды
Менің ойымша, мен Lucene-мен ұстанып, сіз берген шешімді қолданамын деп ойлаймын. Рахмет
қосылды автор COBOL, көзі
Мен Lucene-мен бірге нобаймын, сондықтан сіз файлдық жүйеде индексті сақтауға арналған нұсқауды ұсынып, содан кейін оны жүктей аласыз ба?
қосылды автор COBOL, көзі
Lucene 5 минут ішінде - жақсы басталу нүктесі. Тек оқу құралында RAMDirectory дегенді FSDirectory ауыстырыңыз және Lucene файлдағы индексті сақтайды.
қосылды автор Acanda, көзі

Lucene қызметін оңтайландырмас бұрын: SQL Server бұрыннан бар толық мәтінді іздеу мүмкіндігінде . Егер бұл сіздің пайдалану жағдайыңызды жабса, оны қолданыңыз. SQL Server іздеу индексін дерекқормен синхрондауда ұстауды шешкендіктен, бұл ең оңай жолы.

Егер SQL Server толық мәтінді іздеу сіздің пайдалану жағдайыңызға сай болмаса, онда сіздің қолданбаңыз өзіңіздің іздеу индексін жасап, оны дерекқормен синхрондауға тиіс. Мұны істеу үшін сіз:

  • Қолданба іске қосылғанда іздеу индексін жасаңыз/жаңартыңыз
  • бағдарлама кірістірсе, тақырыпты жаңартса немесе жоятын болса, іздеу индексін жаңартыңыз.

Lucene іздеу индексін сақтайтын жерде икемді. Сіз оны файлдық жүйеңіздегі немесе дерекқордағы каталогта сақтай аласыз (немесе өзіңіздің сақтау провайдеріңізді жазыңыз). Мен оны файлдық жүйеде сақтауды ұсынамын, себебі өнімділік дерекқорда сақтағаннан гөрі әлдеқайда жақсы.

Егер индекстеу үшін тым көп тақырыптар болмаса, әр қолданылатын кезде жадында сақтайтын жад ішіндегі іздеу индексін қолдануға болады.

0
қосылды
Менің ойымша, мен Lucene-мен ұстанып, сіз берген шешімді қолданамын деп ойлаймын. Рахмет
қосылды автор COBOL, көзі
Мен Lucene-мен бірге нобаймын, сондықтан сіз файлдық жүйеде индексті сақтауға арналған нұсқауды ұсынып, содан кейін оны жүктей аласыз ба?
қосылды автор COBOL, көзі
Lucene 5 минут ішінде - жақсы басталу нүктесі. Тек оқу құралында RAMDirectory дегенді FSDirectory ауыстырыңыз және Lucene файлдағы индексті сақтайды.
қосылды автор Acanda, көзі

Lucene қызметін оңтайландырмас бұрын: SQL Server бұрыннан бар толық мәтінді іздеу мүмкіндігінде . Егер бұл сіздің пайдалану жағдайыңызды жабса, оны қолданыңыз. SQL Server іздеу индексін дерекқормен синхрондауда ұстауды шешкендіктен, бұл ең оңай жолы.

Егер SQL Server толық мәтінді іздеу сіздің пайдалану жағдайыңызға сай болмаса, онда сіздің қолданбаңыз өзіңіздің іздеу индексін жасап, оны дерекқормен синхрондауға тиіс. Мұны істеу үшін сіз:

  • Қолданба іске қосылғанда іздеу индексін жасаңыз/жаңартыңыз
  • бағдарлама кірістірсе, тақырыпты жаңартса немесе жоятын болса, іздеу индексін жаңартыңыз.

Lucene іздеу индексін сақтайтын жерде икемді. Сіз оны файлдық жүйеңіздегі немесе дерекқордағы каталогта сақтай аласыз (немесе өзіңіздің сақтау провайдеріңізді жазыңыз). Мен оны файлдық жүйеде сақтауды ұсынамын, себебі өнімділік дерекқорда сақтағаннан гөрі әлдеқайда жақсы.

Егер индекстеу үшін тым көп тақырыптар болмаса, әр қолданылатын кезде жадында сақтайтын жад ішіндегі іздеу индексін қолдануға болады.

0
қосылды
Менің ойымша, мен Lucene-мен ұстанып, сіз берген шешімді қолданамын деп ойлаймын. Рахмет
қосылды автор COBOL, көзі
Мен Lucene-мен бірге нобаймын, сондықтан сіз файлдық жүйеде индексті сақтауға арналған нұсқауды ұсынып, содан кейін оны жүктей аласыз ба?
қосылды автор COBOL, көзі
Lucene 5 минут ішінде - жақсы басталу нүктесі. Тек оқу құралында RAMDirectory дегенді FSDirectory ауыстырыңыз және Lucene файлдағы индексті сақтайды.
қосылды автор Acanda, көзі

Сізге керек:

  1. Қолданба басталар алдында Lucene индексін жасау
  2. дерекқордағы тақырыпты қосу/жою/жаңарту кезінде индексті жаңарту

Бұл тәсілдің артықшылықтары:

  1. Қолданба офлайн болғанда толық индексі
  2. қосымша индекстеу, тиісті ақпарат өзгерген сайын
0
қосылды
Рахмет, бұл менің түсінуіме және іске асыруға жеткілікті қарапайым болып көрінеді.
қосылды автор COBOL, көзі
Бірақ сіз басқа жауапты қабылдадыңыз :-D
қосылды автор user987339, көзі

Сізге керек:

  1. Қолданба басталар алдында Lucene индексін жасау
  2. дерекқордағы тақырыпты қосу/жою/жаңарту кезінде индексті жаңарту

Бұл тәсілдің артықшылықтары:

  1. Қолданба офлайн болғанда толық индексі
  2. қосымша индекстеу, тиісті ақпарат өзгерген сайын
0
қосылды
Рахмет, бұл менің түсінуіме және іске асыруға жеткілікті қарапайым болып көрінеді.
қосылды автор COBOL, көзі
Бірақ сіз басқа жауапты қабылдадыңыз :-D
қосылды автор user987339, көзі

Сізге керек:

  1. Қолданба басталар алдында Lucene индексін жасау
  2. дерекқордағы тақырыпты қосу/жою/жаңарту кезінде индексті жаңарту

Бұл тәсілдің артықшылықтары:

  1. Қолданба офлайн болғанда толық индексі
  2. қосымша индекстеу, тиісті ақпарат өзгерген сайын
0
қосылды
Рахмет, бұл менің түсінуіме және іске асыруға жеткілікті қарапайым болып көрінеді.
қосылды автор COBOL, көзі
Бірақ сіз басқа жауапты қабылдадыңыз :-D
қосылды автор user987339, көзі