|
|
|
lucene 3.5.0, ejb3.1
|
|||
|---|---|---|---|
|
#18+
добрый день, использую lucene 3.5.0, win7(x64), jdk 1.7.0_03-b05 (x86), glassfish 3.1.2. из Directory получается юзать только RAMDirectory, все остальные которые FSDirectory(SimpleFSDirectory, NIOFSDirectory) при попытке обращения выдают [#|2012-04-09T16:26:28.597+0400|SEVERE|glassfish3.1.2|lucene.Indexer|_ThreadID=102;_ThreadName=Thread-2;|index:new IndexWriter(): org.apache.lucene.store.LockObtainFailedException: Lock obtain timed out: NativeFSLock@D:\indexDir\write.lock ... код такой, находится в ejb3.1 бине(может это сказывается, хотя какого х) Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. где class Config Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. задумка такая что Indexer будет раз в сутки индексировать вьюшку db, по таймеру сейчас он закоментирован. пробовал просто из кода вызывать index() без таймера метод, тоже самое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2012, 16:38:24 |
|
||
|
lucene 3.5.0, ejb3.1
|
|||
|---|---|---|---|
|
#18+
Может просто файлик надо удалить? Код вроде нормальный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2012, 16:47:56 |
|
||
|
lucene 3.5.0, ejb3.1
|
|||
|---|---|---|---|
|
#18+
writer нужно закрывать в блоке finally IndexWriterConfig и Config точно на каждый запрос надо пересоздавать? Файловая система вообще не транзакционная. Почему не использовать БД? Там таймаут вообще настраивается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2012, 16:55:54 |
|
||
|
lucene 3.5.0, ejb3.1
|
|||
|---|---|---|---|
|
#18+
точно, удалил write.lock и заработало, спасибо. но не понял что это было ? p.s с lucene только начал, и маленький оффтоп. если index уже был создан, то при повторной переиндексации в тот же каталог замена/добавление будут производиться сами ? например из базы удалили инфу которая уже была в index или добавили новую которой еще нет в нем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2012, 17:00:15 |
|
||
|
lucene 3.5.0, ejb3.1
|
|||
|---|---|---|---|
|
#18+
breathточно, удалил write.lock и заработало, спасибо. но не понял что это было ? Выкинулся где-то exception, метод close() не вызвался - лок не удалился. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2012, 17:02:29 |
|
||
|
lucene 3.5.0, ejb3.1
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, >IndexWriterConfig и Config точно на каждый запрос надо пересоздавать? это вобще пока не суть, так как это @Singleton можно конечно и в @PostConstruct private void init() { db = (SearchDB) ctx.lookup("java:global/gorKassa/SearchDB"); timerService = ctx.getTimerService(); //timerService.createTimer(1400, 1400, null); Config conf = new Config(); IndexWriterConfig config = new IndexWriterConfig(conf.getVersion(), conf.getAnalyzer()); } >Файловая система вообще не транзакционная. Почему не использовать БД? всмысле индексы хранить в db ? вобще хранение индексов в файлах, я думал как раз разгружает базу(можно конечно создать новую отдельную от основной базу для индексов и в ней хранить, решается заодно вопрос кластеризации индексов(записей в базе) средствами oracle), где то читал что есть jdbc directory, но для этого нужно прикручивать какой то левый фрамеворк.. не очень пока хотелось. поэтому остановился на файлах, они по любому быстрее чем db мне кажется, особенно NIOFSDirectory. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2012, 17:10:43 |
|
||
|
lucene 3.5.0, ejb3.1
|
|||
|---|---|---|---|
|
#18+
breathони по любому быстрее чем db мне кажется :) Ну, ОК. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2012, 17:14:25 |
|
||
|
lucene 3.5.0, ejb3.1
|
|||
|---|---|---|---|
|
#18+
хм, ну если не прав в этом, Вы скажите.. ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2012, 17:15:24 |
|
||
|
lucene 3.5.0, ejb3.1
|
|||
|---|---|---|---|
|
#18+
и плюс, подумал что каталог с индексами можно кластеризировать например средсвами glusterfs ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2012, 17:16:42 |
|
||
|
lucene 3.5.0, ejb3.1
|
|||
|---|---|---|---|
|
#18+
breathхм, ну если не прав в этом, Вы скажите.. ) Очень много разных факторов. Скачать однозначно что что-то одно быстре - нельзя: https://issues.apache.org/jira/browse/LUCENE-724 http://wiki.apache.org/lucene-java/ImproveSearchingSpeed ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2012, 17:20:03 |
|
||
|
lucene 3.5.0, ejb3.1
|
|||
|---|---|---|---|
|
#18+
breathи плюс, подумал что каталог с индексами можно кластеризировать например средсвами glusterfs У Lucene в контрибах есть поддержка простейшего распределенного индекса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2012, 17:59:58 |
|
||
|
lucene 3.5.0, ejb3.1
|
|||
|---|---|---|---|
|
#18+
спасибо посмотрю, а что имеется ввиду под ? (простейшего..) >простейшего распределенного индекса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2012, 19:51:16 |
|
||
|
lucene 3.5.0, ejb3.1
|
|||
|---|---|---|---|
|
#18+
breathспасибо посмотрю, а что имеется ввиду под ? (простейшего..) >простейшего распределенного индекса. Я думаю, что там просто разбивка по сегментам, которые лежат на разных машинах. Запрос уходит на несколько машин, а потом объединяется. Посмотрите на solr - возможно, он для ваших задач лучше подойдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2012, 20:59:02 |
|
||
|
lucene 3.5.0, ejb3.1
|
|||
|---|---|---|---|
|
#18+
solr будет тут избыточен возможно, мне не нужен отдельный поисковый сервер. система, как мне думалось будет такая, glassfish настраивается на работу в кластере с балансировщиком нагрузки(в glassfish этот функционал, как почитал, идет из коробки), в качестве db - oracle, у него тоже есть стандартные инструменты для кластеризации данных. чтобы не искать постоянно в db(планируются очень высокие нагрузки), lucene будет индексировать нужные таблицы(точнее вьюшки) с каким то интервалом, и поиск будет только по индексам. (в db будут искать только админы, все остальные в lucene index). то есть логика приложения(ejb бины в кластере), данные(oracle в кластере), остаются индексы(если упадет один из сервков то нужно чтобы другой тоже имел копию index). прикинув все возможные варианты, показалось что с glusterfs можно решить этот вопрос с индексами интересно что думаете, может кто делал похожий функционал. спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2012, 21:57:37 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37745891&tid=2132088]: |
0ms |
get settings: |
14ms |
get forum list: |
21ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
61ms |
get topic data: |
19ms |
get forum data: |
5ms |
get page messages: |
83ms |
get tp. blocked users: |
3ms |
| others: | 393ms |
| total: | 613ms |

| 0 / 0 |
