public ConditionTemplate metadatasHasAnalyzedValue(String value, List<Metadata> metadatas) { List<String> availableLanguages = modelLayerFactory.getCollectionsListManager().getCollectionLanguages(collection); LanguageDetectionManager languageDetectionManager = modelLayerFactory.getLanguageDetectionManager(); String language = availableLanguages.size() == 1 ? availableLanguages.get(0) : languageDetectionManager.tryDetectLanguage(value); List<Metadata> searchedMetadatas = new ArrayList<>(); for (Metadata metadata : metadatas) { if (!availableLanguages.contains(language) || language == null) { for (String availableLanguage : availableLanguages) { searchedMetadatas.add(metadata.getSearchableMetadataWithLanguage(availableLanguage)); } } else { searchedMetadatas.add(metadata.getSearchableMetadataWithLanguage(language)); } } return ConditionTemplate.anyField(searchedMetadatas, query(value)); }