@Override public IndexSearchResultIteratorCollection mergeIterators(IndexSearchResultIteratorCollection mergeInto, IndexSearchResultIteratorCollection... results) throws JasDBStorageException { List<Key> mergeIntoKeys = new LinkedList<>(); for(Key mergeKey : mergeInto.getKeys()) { mergeIntoKeys.add(mergeKey.cloneKey(true)); } KeyNameMapper keyNameMapper = mergeInto.getKeyNameMapper(); for(IndexSearchResultIteratorCollection collection : results) { mergeCollection(collection, mergeIntoKeys, keyNameMapper); } return new IndexSearchResultIteratorImpl(mergeIntoKeys, keyNameMapper); }
@Override public Set<Key> createMultivalueKeys(IndexableItem indexableItem) throws JasDBStorageException { KeyNameMapper nameMapper = multiKeyloader.getKeyNameMapper(); Set<Key> currentKeys = new HashSet<>(); currentKeys.add(new CompositeKey()); for(KeyFactory keyFactory : multiKeyloader.getKeyFactories()) { Set<Key> subKeys = keyFactory.createMultivalueKeys(indexableItem); Set<Key> productSet = new HashSet<>(); for(Key currentKey : currentKeys) { for(Key subKey : subKeys) { Key key = currentKey.cloneKey(true); key.addKey(nameMapper, keyFactory.getFieldName(), subKey.cloneKey(false)); productSet.add(key); } } currentKeys = productSet; } return currentKeys; }