diff --git a/src/main/java/NTNU/IDATT1002/repository/AlbumRepository.java b/src/main/java/NTNU/IDATT1002/repository/AlbumRepository.java
index 4952a2156a40f0983271401024bf8e6ca7d6d685..8a7c5bbe05465c033fbbf970a35e2b4b674c1aff 100644
--- a/src/main/java/NTNU/IDATT1002/repository/AlbumRepository.java
+++ b/src/main/java/NTNU/IDATT1002/repository/AlbumRepository.java
@@ -16,9 +16,11 @@ import java.util.List;
 public class AlbumRepository extends AbstractRepository<Album, Long> {
 
     /**
-     * Mapping to @NamedQuery 'find all albums by users username' defined in {@link  Album}
+     * Mapping to @NamedQuery 'find all albums by username, tags, and title' defined in {@link  Album}
      */
     public static final String ALBUM_FIND_BY_USERNAME = "Album.findAllByUsername";
+    public static final String ALBUM_FIND_BY_TAGS = "Album.findByTags";
+    public static final String ALBUM_FIND_BY_TITLE = "Album.findByTitle";
 
     /**
      * Constructor to inject {@link EntityManager} dependency and sets the class type to {@link Album}
@@ -42,4 +44,17 @@ public class AlbumRepository extends AbstractRepository<Album, Long> {
                 .getResultList();
     }
 
+    public List<Album> findAllByTags(String tag){
+        return entityManager.createNamedQuery(ALBUM_FIND_BY_TAGS, Album.class)
+                .setParameter("name",tag)
+                .getResultList();
+    }
+
+    public List<Album> findAllByTitle(String title){
+        return entityManager.createNamedQuery(ALBUM_FIND_BY_TITLE, Album.class)
+                .setParameter("title", title)
+                .getResultList();
+    }
+
+
 }
diff --git a/src/main/java/NTNU/IDATT1002/repository/ImageRepository.java b/src/main/java/NTNU/IDATT1002/repository/ImageRepository.java
index bdb25bddd9fdcbd494394494564834b3669b9c93..1d9b3ff76d27f41df580955434b7610b475d59b7 100644
--- a/src/main/java/NTNU/IDATT1002/repository/ImageRepository.java
+++ b/src/main/java/NTNU/IDATT1002/repository/ImageRepository.java
@@ -19,7 +19,7 @@ import java.util.List;
 public class ImageRepository extends AbstractRepository<Image, Long> {
 
     /**
-     * Mapping to @NamedQuery 'find all albums by users username' defined in {@link  Image}
+     * Mapping to @NamedQuery 'find all albums by username and tags' defined in {@link  Image}
      */
     public static final String IMAGE_FIND_BY_USERNAME = "Image.findAllByUsername";
     public static final String IMAGE_FIND_BY_TAG = "Image.findByTags";
diff --git a/src/main/java/NTNU/IDATT1002/service/AlbumService.java b/src/main/java/NTNU/IDATT1002/service/AlbumService.java
index 3f0ed9a8275353899fbc08cddbe367328a9b7ef2..6689e970622c9b498b9cc47d3411e8dee583ad23 100644
--- a/src/main/java/NTNU/IDATT1002/service/AlbumService.java
+++ b/src/main/java/NTNU/IDATT1002/service/AlbumService.java
@@ -12,6 +12,7 @@ import javax.persistence.EntityManager;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
+import java.util.stream.Collectors;
 
 
 /**
@@ -114,4 +115,32 @@ public class AlbumService {
         return document;
     }
 
+    /**
+     * Takes in a string and searched through all album by tags, username and title to find results
+     * @param query
+     * @return list of results without duplocates
+     */
+
+    public List<Album> searchResult(String query){
+        List<Album> allFound = new ArrayList<>();
+        List<Album> byTags = albumRepository.findAllByTags(query);
+        List<Album> byUsername = albumRepository.findAllByUsername(query);
+        List<Album> byTitle = albumRepository.findAllByTitle(query);
+        allFound.addAll(byTags);
+        allFound.addAll(byUsername);
+        allFound.addAll(byTitle);
+        return removeDuplicates(allFound);
+    }
+
+
+    /**
+     * takes a list and removes all duplicate elements
+     * @param albums
+     * @return list without duplicates
+     */
+
+    public List<Album> removeDuplicates(List<Album> albums){
+        return albums.stream().distinct().collect(Collectors.toList());
+    }
+
 }