В клиентском программном компоненте используется Lucene 2.9, и они используют множество свойств индекса, некоторые из них являются тикендизированными, некоторые - нет.Мы предполагаем, что свойство xyz
добавляется в индекс следующим образом:
index.add (новое поле ("xyz", значение, Field.Store.YES, Field.Index.UN_TOKENIZED));
Когда мы создаем новые объекты в индексе (скажем, 150 новых объектов за 3 секунды), я увидел временное исключение, когда программа пыталась выполнить сортированный поиск по одному из свойств UNTOKENIZED
:
Caused by: java.lang.RuntimeException: there are more terms than documents in field "xyz", but it's impossible to sort on tokenized fields
at org.apache.lucene.search.FieldCacheImpl$StringIndexCache.createValue(FieldCacheImpl.java:706) ~[lucene-core-2.9.2.jar:2.9.2 912433 - 2010-02-21 23:51:08]
at org.apache.lucene.search.FieldCacheImpl$Cache.get(FieldCacheImpl.java:208) ~[lucene-core-2.9.2.jar:2.9.2 912433 - 2010-02-21 23:51:08]
at org.apache.lucene.search.FieldCacheImpl.getStringIndex(FieldCacheImpl.java:676) ~[lucene-core-2.9.2.jar:2.9.2 912433 - 2010-02-21 23:51:08]
at org.apache.lucene.search.FieldComparator$StringOrdValComparator.setNextReader(FieldComparator.java:667) ~[lucene-core-2.9.2.jar:2.9.2 912433 - 2010-02-21 23:51:08]
at org.apache.lucene.search.TopFieldCollector$OneComparatorNonScoringCollector.setNextReader(TopFieldCollector.java:94) ~[lucene-core-2.9.2.jar:2.9.2 912433 - 2010-02-21 23:51:08]
at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:245) ~[lucene-core-2.9.2.jar:2.9.2 912433 - 2010-02-21 23:51:08]
at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:236) ~[lucene-core-2.9.2.jar:2.9.2 912433 - 2010-02-21 23:51:08]
at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:179) ~[lucene-core-2.9.2.jar:2.9.2 912433 - 2010-02-21 23:51:08]
at org.apache.lucene.search.Hits.getMoreDocs(Hits.java:113) ~[lucene-core-2.9.2.jar:2.9.2 912433 - 2010-02-21 23:51:08]
at org.apache.lucene.search.Hits.<init>(Hits.java:90) ~[lucene-core-2.9.2.jar:2.9.2 912433 - 2010-02-21 23:51:08]
at org.apache.lucene.search.Searcher.search(Searcher.java:63) ~[lucene-core-2.9.2.jar:2.9.2 912433 - 2010-02-21 23:51:08]
Исключение можно было наблюдать в течение нескольких секунд / минут, а затем оно исчезало.
Индекс содержит около 1 миллиона проиндексированных объектов.
Я знаю, задайте следующие вопросы:
Существует ли какая-либо известная проблема, связанная с неотмеченными свойствами, например, любая асинхронная внутренняя логика Lucene, которая запускается после добавления нового объекта в индекс?По крайней мере, если взглянуть на приведенную выше трассировку стека, кажется, что существует кэш-память, которая может временно испортиться при некоторых обстоятельствах?Я думал, что Lucene ничего не делает после того, как я добавил объект в индекс.
Спасибо за любой совет (и, пожалуйста, не говорите мне, чтобы обновить Lucene, я говорил об этом около 100 раз своему клиенту.)