{"id":50616,"date":"2024-08-10T10:41:22","date_gmt":"2024-08-10T01:41:22","guid":{"rendered":"https:\/\/hnu4c.shop\/blog\/development\/building-an-advanced-search-engine-with-spring-boot-and-apache-solr"},"modified":"2024-08-10T10:41:22","modified_gmt":"2024-08-10T01:41:22","slug":"building-an-advanced-search-engine-with-spring-boot-and-apache-solr","status":"publish","type":"post","link":"https:\/\/hnu4c.shop\/blog\/development\/building-an-advanced-search-engine-with-spring-boot-and-apache-solr","title":{"rendered":"Spring Boot\uc640 Apache Solr\ub97c \uc774\uc6a9\ud55c \uace0\uae09 \uac80\uc0c9 \uc5d4\uc9c4 \uad6c\ucd95"},"content":{"rendered":"
\ud604\ub300\uc758 \uc6f9 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc740 \ubc29\ub300\ud55c \uc591\uc758 \ub370\uc774\ud130\ub97c \ucc98\ub9ac\ud558\uace0, \uc0ac\uc6a9\uc790\uc5d0\uac8c \ube60\ub974\uace0 \uc815\ud655\ud55c \uac80\uc0c9 \uacb0\uacfc\ub97c \uc81c\uacf5\ud574\uc57c \ud569\ub2c8\ub2e4. \uc774\ub7ec\ud55c \uc694\uad6c\ub97c \ucda9\uc871\ud558\uae30 \uc704\ud574 Spring Boot\uc640 Apache Solr\ub97c \uacb0\ud569\ud558\uc5ec \uace0\uae09 \uac80\uc0c9 \uc5d4\uc9c4\uc744 \uad6c\ucd95\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud574 \uc54c\uc544\ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \uc774 \uae00\uc5d0\uc11c\ub294 Spring Boot\uc640 Apache Solr\uc758 \uae30\ubcf8 \uac1c\ub150\ubd80\ud130 \uc2dc\uc791\ud558\uc5ec, \uc2e4\uc81c \uad6c\ud604 \uc0ac\ub840, \uc131\ub2a5 \ucd5c\uc801\ud654 \ubc29\ubc95, \uadf8\ub9ac\uace0 \uc720\uc9c0\ubcf4\uc218 \uc804\ub7b5\uae4c\uc9c0 \ud3ec\uad04\uc801\uc73c\ub85c \ub2e4\ub8f0 \uac83\uc785\ub2c8\ub2e4.<\/p>\n
Spring Boot\ub294 Java \uae30\ubc18\uc758 \ud504\ub808\uc784\uc6cc\ud06c\ub85c, \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uac1c\ubc1c\uc744 \uac04\uc18c\ud654\ud558\uace0 \uc2e0\uc18d\ud558\uac8c \uc9c4\ud589\ud560 \uc218 \uc788\ub3c4\ub85d \ub3d5\uc2b5\ub2c8\ub2e4. \ubc18\uba74, Apache Solr\ub294 \uac15\ub825\ud55c \uc624\ud508 \uc18c\uc2a4 \uac80\uc0c9 \ud50c\ub7ab\ud3fc\uc73c\ub85c, \ub300\ub7c9\uc758 \ub370\uc774\ud130\ub97c \ud6a8\uc728\uc801\uc73c\ub85c \uac80\uc0c9\ud558\uace0 \uc0c9\uc778\ud654\ud558\ub294 \ub370 \ucd5c\uc801\ud654\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ub450 \uae30\uc220\uc744 \uacb0\ud569\ud558\uba74, \uc0ac\uc6a9\uc790\uc5d0\uac8c \ube60\ub974\uace0 \uc815\ud655\ud55c \uac80\uc0c9 \uacbd\ud5d8\uc744 \uc81c\uacf5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n
Spring Boot\ub294 \uc124\uc815\uc774 \uac04\ud3b8\ud558\uace0, \ub2e4\uc591\ud55c \uc2a4\ud0c0\ud130 \ud328\ud0a4\uc9c0\ub97c \ud1b5\ud574 \ud544\uc694\ud55c \uae30\ub2a5\uc744 \uc27d\uac8c \ucd94\uac00\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, Spring Data Solr \uc2a4\ud0c0\ud130\ub97c \uc0ac\uc6a9\ud558\uba74 Solr\uc640\uc758 \ud1b5\ud569\uc774 \ub9e4\uc6b0 \uac04\ub2e8\ud574\uc9d1\ub2c8\ub2e4. \ub610\ud55c, Spring Boot\ub294 RESTful API\ub97c \uc27d\uac8c \uad6c\ucd95\ud560 \uc218 \uc788\ub294 \uae30\ub2a5\uc744 \uc81c\uacf5\ud558\uc5ec, \ud074\ub77c\uc774\uc5b8\ud2b8\uc640\uc758 \uc0c1\ud638\uc791\uc6a9\uc744 \uc6d0\ud65c\ud558\uac8c \ud569\ub2c8\ub2e4.<\/p>\n
Apache Solr\ub294 \ubd84\uc0b0 \uac80\uc0c9 \uae30\ub2a5\uc744 \uc9c0\uc6d0\ud558\uba70, \ub300\ub7c9\uc758 \ub370\uc774\ud130\ub97c \ucc98\ub9ac\ud560 \uc218 \uc788\ub294 \ub2a5\ub825\uc744 \uac00\uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4. \ub610\ud55c, \ub2e4\uc591\ud55c \ucffc\ub9ac \uae30\ub2a5\uacfc \ud544\ud130\ub9c1 \uc635\uc158\uc744 \uc81c\uacf5\ud558\uc5ec \uc0ac\uc6a9\uc790\uac00 \uc6d0\ud558\ub294 \uc815\ubcf4\ub97c \uc27d\uac8c \ucc3e\uc744 \uc218 \uc788\ub3c4\ub85d \ub3d5\uc2b5\ub2c8\ub2e4. Solr\ub294 JSON \ubc0f XML \ud615\uc2dd\uc73c\ub85c \ub370\uc774\ud130\ub97c \uc8fc\uace0\ubc1b\uc744 \uc218 \uc788\uc5b4, \ub2e4\uc591\ud55c \ud074\ub77c\uc774\uc5b8\ud2b8\uc640\uc758 \ud1b5\ud569\uc774 \uc6a9\uc774\ud569\ub2c8\ub2e4.<\/p>\n
\uc774 \ub450 \uae30\uc220\uc758 \uc870\ud569\uc740 \ud2b9\ud788 \ub300\uaddc\ubaa8 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc6b4\uc601\ud558\ub294 \uae30\uc5c5\uc774\ub098, \uac80\uc0c9 \uae30\ub2a5\uc774 \uc911\uc694\ud55c \uc6f9 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \ud070 \uc7a5\uc810\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4. \ub2e4\uc74c \uc139\uc158\uc5d0\uc11c\ub294 Spring Boot\uc640 Apache Solr\uc758 \uc124\uce58 \ubc0f \uc124\uc815 \ubc29\ubc95\uc5d0 \ub300\ud574 \uc790\uc138\ud788 \uc54c\uc544\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n
Spring Boot\uc640 Apache Solr\ub97c \uc124\uce58\ud558\uace0 \uc124\uc815\ud558\ub294 \uacfc\uc815\uc740 \ube44\uad50\uc801 \uac04\ub2e8\ud569\ub2c8\ub2e4. \uba3c\uc800, Spring Boot \ud504\ub85c\uc81d\ud2b8\ub97c \uc0dd\uc131\ud55c \ud6c4, \ud544\uc694\ud55c \uc758\uc874\uc131\uc744 \ucd94\uac00\ud574\uc57c \ud569\ub2c8\ub2e4. Maven \ub610\ub294 Gradle\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc758\uc874\uc131\uc744 \uad00\ub9ac\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n
\n\n org.springframework.boot\n spring-boot-starter-data-solr\n\n<\/code><\/pre>\n\uc704\uc758 \uc758\uc874\uc131\uc744 \ucd94\uac00\ud55c \ud6c4, application.properties \ud30c\uc77c\uc5d0 Solr \uc11c\ubc84\uc758 URL\uc744 \uc124\uc815\ud569\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, \ub85c\uceec\uc5d0\uc11c \uc2e4\ud589 \uc911\uc778 Solr \uc11c\ubc84\uc758 URL\uc740 \ub2e4\uc74c\uacfc \uac19\uc774 \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n
\nspring.data.solr.host=http:\/\/localhost:8983\/solr\n<\/code><\/pre>\n\uc774\uc81c Solr \uc11c\ubc84\uac00 \uc900\ube44\ub418\uc5c8\uc73c\ubbc0\ub85c, \uc0c9\uc778\ud560 \ub370\uc774\ud130\ub97c \uc815\uc758\ud574\uc57c \ud569\ub2c8\ub2e4. Spring Data Solr\ub97c \uc0ac\uc6a9\ud558\uba74, \ub3c4\uba54\uc778 \uac1d\uccb4\ub97c \uc815\uc758\ud558\uace0 \uc774\ub97c Solr\uc5d0 \ub9e4\ud551\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, \ub2e4\uc74c\uacfc \uac19\uc740 Product \ud074\ub798\uc2a4\ub97c \uc815\uc758\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n
\nimport org.springframework.data.annotation.Id;\nimport org.springframework.data.solr.core.mapping.SolrDocument;\n\n@SolrDocument\npublic class Product {\n @Id\n private String id;\n private String name;\n private String description;\n\n \/\/ getters and setters\n}\n<\/code><\/pre>\n\uc774\uc81c Product \uac1d\uccb4\ub97c Solr\uc5d0 \uc800\uc7a5\ud558\uace0 \uac80\uc0c9\ud560 \uc900\ube44\uac00 \ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ub2e4\uc74c \uc139\uc158\uc5d0\uc11c\ub294 \ub370\uc774\ud130 \uc0c9\uc778\ud654 \ubc0f \uac80\uc0c9 \uae30\ub2a5 \uad6c\ud604\uc5d0 \ub300\ud574 \uc54c\uc544\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n
3. \ub370\uc774\ud130 \uc0c9\uc778\ud654 \ubc0f \uac80\uc0c9 \uae30\ub2a5 \uad6c\ud604<\/h2>\n
\ub370\uc774\ud130 \uc0c9\uc778\ud654\ub294 Solr\uc758 \ud575\uc2ec \uae30\ub2a5 \uc911 \ud558\ub098\ub85c, \ub370\uc774\ud130\ub97c \ud6a8\uc728\uc801\uc73c\ub85c \uac80\uc0c9\ud560 \uc218 \uc788\ub3c4\ub85d \uc900\ube44\ud558\ub294 \uacfc\uc815\uc785\ub2c8\ub2e4. Spring Data Solr\ub97c \uc0ac\uc6a9\ud558\uba74, \uac04\ub2e8\ud55c \uba54\uc11c\ub4dc\ub97c \ud1b5\ud574 \ub370\uc774\ud130\ub97c \uc0c9\uc778\ud654\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n
\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.data.solr.core.SolrOperations;\nimport org.springframework.stereotype.Service;\n\n@Service\npublic class ProductService {\n @Autowired\n private SolrOperations solrOperations;\n\n public void saveProduct(Product product) {\n solrOperations.save(product);\n solrOperations.commit();\n }\n}\n<\/code><\/pre>\n\uc704\uc758 \ucf54\ub4dc\uc5d0\uc11c saveProduct \uba54\uc11c\ub4dc\ub294 Product \uac1d\uccb4\ub97c Solr\uc5d0 \uc800\uc7a5\ud558\ub294 \uc5ed\ud560\uc744 \ud569\ub2c8\ub2e4. \uc800\uc7a5 \ud6c4 commit \uba54\uc11c\ub4dc\ub97c \ud638\ucd9c\ud558\uc5ec \ubcc0\uacbd \uc0ac\ud56d\uc744 \ubc18\uc601\ud569\ub2c8\ub2e4. \uc774\uc81c \uc0c9\uc778\ud654\ub41c \ub370\uc774\ud130\ub97c \uac80\uc0c9\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud574 \uc54c\uc544\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n
Solr\uc5d0\uc11c \ub370\uc774\ud130\ub97c \uac80\uc0c9\ud558\uae30 \uc704\ud574\uc11c\ub294 \ucffc\ub9ac\ub97c \uc791\uc131\ud574\uc57c \ud569\ub2c8\ub2e4. Spring Data Solr\uc5d0\uc11c\ub294 Query \uac1d\uccb4\ub97c \uc0ac\uc6a9\ud558\uc5ec \ucffc\ub9ac\ub97c \uc0dd\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub2e4\uc74c\uc740 \ud2b9\uc815 \uc774\ub984\uc744 \uac00\uc9c4 \uc81c\ud488\uc744 \uac80\uc0c9\ud558\ub294 \uc608\uc81c\uc785\ub2c8\ub2e4.<\/p>\n
\nimport org.springframework.data.solr.core.query.Query;\nimport org.springframework.data.solr.core.query.Criteria;\nimport org.springframework.data.solr.core.query.SimpleQuery;\n\npublic List findByName(String name) {\n Query query = new SimpleQuery(new Criteria(\"name\").is(name));\n return solrOperations.queryForList(query, Product.class);\n}\n<\/code><\/pre>\n\uc704\uc758 findByName \uba54\uc11c\ub4dc\ub294 \uc8fc\uc5b4\uc9c4 \uc774\ub984\uacfc \uc77c\uce58\ud558\ub294 \uc81c\ud488\uc744 \uac80\uc0c9\ud558\uc5ec \ub9ac\uc2a4\ud2b8\ub85c \ubc18\ud658\ud569\ub2c8\ub2e4. \uc774\ucc98\ub7fc Spring Data Solr\ub97c \uc0ac\uc6a9\ud558\uba74 \ubcf5\uc7a1\ud55c \ucffc\ub9ac\ub3c4 \uac04\ub2e8\ud558\uac8c \uc791\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub2e4\uc74c \uc139\uc158\uc5d0\uc11c\ub294 \uc131\ub2a5 \ucd5c\uc801\ud654 \ubc29\ubc95\uc5d0 \ub300\ud574 \uc54c\uc544\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n
4. \uc131\ub2a5 \ucd5c\uc801\ud654 \ubc29\ubc95<\/h2>\n
\uac80\uc0c9 \uc5d4\uc9c4\uc758 \uc131\ub2a5\uc740 \uc0ac\uc6a9\uc790 \uacbd\ud5d8\uc5d0 \ud070 \uc601\ud5a5\uc744 \ubbf8\uce69\ub2c8\ub2e4. \ub530\ub77c\uc11c \uc131\ub2a5 \ucd5c\uc801\ud654\ub294 \ub9e4\uc6b0 \uc911\uc694\ud569\ub2c8\ub2e4. Apache Solr\ub294 \ub2e4\uc591\ud55c \uc131\ub2a5 \ucd5c\uc801\ud654 \uae30\ub2a5\uc744 \uc81c\uacf5\ud558\uba70, \uc774\ub97c \ud65c\uc6a9\ud558\uc5ec \uac80\uc0c9 \uc18d\ub3c4\ub97c \ud5a5\uc0c1\uc2dc\ud0ac \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n
\uccab\uc9f8, \uc801\uc808\ud55c \uc0c9\uc778 \uc804\ub7b5\uc744 \uc120\ud0dd\ud574\uc57c \ud569\ub2c8\ub2e4. \ub370\uc774\ud130\uc758 \ud2b9\uc131\uc5d0 \ub530\ub77c \uc0c9\uc778 \ubc29\uc2dd\uc744 \uc870\uc815\ud558\uba74 \uc131\ub2a5\uc744 \ud06c\uac8c \ud5a5\uc0c1\uc2dc\ud0ac \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, \uc790\uc8fc \ubcc0\uacbd\ub418\uc9c0 \uc54a\ub294 \ub370\uc774\ud130\ub294 \ubc30\uce58 \uc0c9\uc778 \ubc29\uc2dd\uc73c\ub85c \ucc98\ub9ac\ud558\uace0, \uc790\uc8fc \ubcc0\uacbd\ub418\ub294 \ub370\uc774\ud130\ub294 \uc2e4\uc2dc\uac04 \uc0c9\uc778 \ubc29\uc2dd\uc73c\ub85c \ucc98\ub9ac\ud558\ub294 \uac83\uc774 \uc88b\uc2b5\ub2c8\ub2e4.<\/p>\n
\ub458\uc9f8, \ucffc\ub9ac \ucd5c\uc801\ud654\ub97c \ud1b5\ud574 \uc131\ub2a5\uc744 \uac1c\uc120\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. Solr\uc5d0\uc11c\ub294 \ucffc\ub9ac \uce90\uc2f1 \uae30\ub2a5\uc744 \uc81c\uacf5\ud558\uc5ec \uc790\uc8fc \uc0ac\uc6a9\ub418\ub294 \ucffc\ub9ac \uacb0\uacfc\ub97c \uba54\ubaa8\ub9ac\uc5d0 \uc800\uc7a5\ud558\uace0, \uc774\ud6c4 \ub3d9\uc77c\ud55c \ucffc\ub9ac\uac00 \ub4e4\uc5b4\uc62c \uacbd\uc6b0 \ube60\ub974\uac8c \uacb0\uacfc\ub97c \ubc18\ud658\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub97c \uc704\ud574 solrconfig.xml \ud30c\uc77c\uc5d0\uc11c \ucffc\ub9ac \uce90\uc2dc \uc124\uc815\uc744 \uc870\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n
\n\n queryResultCache\n solr.LRUCache\n 10000\n 1000\n 1000\n\n<\/code><\/pre>\n\uc14b\uc9f8, \ud544\ub4dc \ud0c0\uc785\uacfc \uc0c9\uc778 \uc804\ub7b5\uc744 \uc801\uc808\ud788 \uc124\uc815\ud558\uc5ec \uac80\uc0c9 \uc131\ub2a5\uc744 \ub192\uc77c \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, \ud14d\uc2a4\ud2b8 \ud544\ub4dc\ub294 \ubd84\uc11d\uae30\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc0c9\uc778\ud654\ud558\uace0, \uc22b\uc790 \ud544\ub4dc\ub294 \uc815\ub82c \ubc0f \ubc94\uc704 \ucffc\ub9ac\uc5d0 \ucd5c\uc801\ud654\ub41c \ud544\ub4dc \ud0c0\uc785\uc744 \uc0ac\uc6a9\ud558\ub294 \uac83\uc774 \uc88b\uc2b5\ub2c8\ub2e4.<\/p>\n
\ub9c8\uc9c0\ub9c9\uc73c\ub85c, \ud558\ub4dc\uc6e8\uc5b4 \ub9ac\uc18c\uc2a4\ub97c \uc801\uc808\ud788 \ud560\ub2f9\ud558\uc5ec \uc131\ub2a5\uc744 \uadf9\ub300\ud654\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. Solr\ub294 \ubd84\uc0b0 \ud658\uacbd\uc5d0\uc11c \uc2e4\ud589\ub420 \uc218 \uc788\uc73c\uba70, \uc5ec\ub7ec \ub300\uc758 \uc11c\ubc84\uc5d0 \ubd80\ud558\ub97c \ubd84\uc0b0\uc2dc\ucf1c \uc131\ub2a5\uc744 \ud5a5\uc0c1\uc2dc\ud0ac \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub2e4\uc74c \uc139\uc158\uc5d0\uc11c\ub294 \ubcf4\uc548 \ubc0f \uc778\uc99d \uc124\uc815\uc5d0 \ub300\ud574 \uc54c\uc544\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n
5. \ubcf4\uc548 \ubc0f \uc778\uc99d \uc124\uc815<\/h2>\n
\uac80\uc0c9 \uc5d4\uc9c4\uc740 \ubbfc\uac10\ud55c \ub370\uc774\ud130\ub97c \ub2e4\ub8f0 \uc218 \uc788\uae30 \ub54c\ubb38\uc5d0 \ubcf4\uc548 \uc124\uc815\uc774 \ub9e4\uc6b0 \uc911\uc694\ud569\ub2c8\ub2e4. Apache Solr\ub294 \ub2e4\uc591\ud55c \ubcf4\uc548 \uae30\ub2a5\uc744 \uc81c\uacf5\ud558\uba70, \uc774\ub97c \ud1b5\ud574 \ub370\uc774\ud130 \ubcf4\ud638 \ubc0f \uc778\uc99d\uc744 \uac15\ud654\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n
\uccab\uc9f8, Solr\uc758 \uae30\ubcf8 \uc778\uc99d \uae30\ub2a5\uc744 \ud65c\uc131\ud654\ud558\uc5ec \uc0ac\uc6a9\uc790 \uc778\uc99d\uc744 \uc694\uad6c\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. solr.xml \ud30c\uc77c\uc5d0\uc11c security.json \ud30c\uc77c\uc744 \ucc38\uc870\ud558\uc5ec \uc778\uc99d \uc815\ubcf4\ub97c \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n
\n{\n \"authentication\": {\n \"blockUnknown\": true,\n \"credentials\": {\n \"admin\": \"password\"\n }\n }\n}\n<\/code><\/pre>\n\ub458\uc9f8, SSL\/TLS\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub370\uc774\ud130 \uc804\uc1a1 \uc2dc \ubcf4\uc548\uc744 \uac15\ud654\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub97c \uc704\ud574 Solr \uc11c\ubc84\uc5d0 SSL \uc778\uc99d\uc11c\ub97c \uc124\uce58\ud558\uace0, solr.in.sh \ud30c\uc77c\uc5d0\uc11c SSL \uad00\ub828 \uc124\uc815\uc744 \ucd94\uac00\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n
\nSOLR_SSL_ENABLED=true\nSOLR_SSL_KEY_STORE=\/path\/to\/keystore.jks\nSOLR_SSL_KEY_STORE_PASSWORD=your_password\n<\/code><\/pre>\n\uc14b\uc9f8, IP \ud654\uc774\ud2b8\ub9ac\uc2a4\ud2b8\ub97c \uc124\uc815\ud558\uc5ec \ud2b9\uc815 IP \uc8fc\uc18c\uc5d0\uc11c\ub9cc \uc811\uadfc\ud560 \uc218 \uc788\ub3c4\ub85d \uc81c\ud55c\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub97c \ud1b5\ud574 \uc678\ubd80 \uacf5\uaca9\uc73c\ub85c\ubd80\ud130 \uc2dc\uc2a4\ud15c\uc744 \ubcf4\ud638\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n
\ub9c8\uc9c0\ub9c9\uc73c\ub85c, \uc815\uae30\uc801\uc778 \ubcf4\uc548 \uc810\uac80 \ubc0f \uc5c5\ub370\uc774\ud2b8\ub97c \ud1b5\ud574 \uc2dc\uc2a4\ud15c\uc758 \ucde8\uc57d\uc810\uc744 \ucd5c\uc18c\ud654\ud574\uc57c \ud569\ub2c8\ub2e4. \ubcf4\uc548\uc740 \uc9c0\uc18d\uc801\uc778 \uad00\ub9ac\uac00 \ud544\uc694\ud55c \ubd84\uc57c\uc774\ubbc0\ub85c, \ud56d\uc0c1 \ucd5c\uc2e0 \ubcf4\uc548 \ud328\uce58\ub97c \uc801\uc6a9\ud558\ub294 \uac83\uc774 \uc911\uc694\ud569\ub2c8\ub2e4. \ub2e4\uc74c \uc139\uc158\uc5d0\uc11c\ub294 \ubaa8\ub2c8\ud130\ub9c1 \ubc0f \uc720\uc9c0\ubcf4\uc218 \uc804\ub7b5\uc5d0 \ub300\ud574 \uc54c\uc544\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n
6. \ubaa8\ub2c8\ud130\ub9c1 \ubc0f \uc720\uc9c0\ubcf4\uc218 \uc804\ub7b5<\/h2>\n
\uac80\uc0c9 \uc5d4\uc9c4\uc758 \uc548\uc815\uc131\uacfc \uc131\ub2a5\uc744 \uc720\uc9c0\ud558\uae30 \uc704\ud574\uc11c\ub294 \uc815\uae30\uc801\uc778 \ubaa8\ub2c8\ud130\ub9c1\uacfc \uc720\uc9c0\ubcf4\uc218\uac00 \ud544\uc694\ud569\ub2c8\ub2e4. Apache Solr\ub294 \ub2e4\uc591\ud55c \ubaa8\ub2c8\ud130\ub9c1 \ub3c4\uad6c\uc640 API\ub97c \uc81c\uacf5\ud558\uc5ec \uc2dc\uc2a4\ud15c \uc0c1\ud0dc\ub97c \uc27d\uac8c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n
\uccab\uc9f8, Solr Admin UI\ub97c \ud65c\uc6a9\ud558\uc5ec \uc2e4\uc2dc\uac04\uc73c\ub85c \uc2dc\uc2a4\ud15c \uc0c1\ud0dc\ub97c \ubaa8\ub2c8\ud130\ub9c1\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. Admin UI\uc5d0\uc11c\ub294 \uc0c9\uc778 \uc0c1\ud0dc, \ucffc\ub9ac \uc131\ub2a5, \uba54\ubaa8\ub9ac \uc0ac\uc6a9\ub7c9 \ub4f1\uc744 \uc2dc\uac01\uc801\uc73c\ub85c \ud655\uc778\ud560 \uc218 \uc788\uc5b4 \ubb38\uc81c \ubc1c\uc0dd \uc2dc \ube60\ub974\uac8c \ub300\uc751\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n
\ub458\uc9f8, JMX(Java Management Extensions)\ub97c \uc0ac\uc6a9\ud558\uc5ec Solr\uc758 \ub0b4\ubd80 \uc0c1\ud0dc\ub97c \ubaa8\ub2c8\ud130\ub9c1\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. JMX\ub97c \ud1b5\ud574 \uba54\ubaa8\ub9ac \uc0ac\uc6a9\ub7c9, \uc2a4\ub808\ub4dc \uc0c1\ud0dc \ub4f1\uc744 \ud655\uc778\ud558\uace0, \ud544\uc694 \uc2dc \uacbd\uace0 \uc54c\ub9bc\uc744 \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n
\uc14b\uc9f8, \ub85c\uadf8 \ud30c\uc77c\uc744 \ubd84\uc11d\ud558\uc5ec \uc2dc\uc2a4\ud15c\uc758 \uc774\uc0c1 \uc9d5\ud6c4\ub97c \uc870\uae30\uc5d0 \ubc1c\uacac\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. Solr\ub294 \ub2e4\uc591\ud55c \ub85c\uadf8 \ub808\ubca8\uc744 \uc9c0\uc6d0\ud558\uba70, \uc774\ub97c \ud1b5\ud574 \ubb38\uc81c \ubc1c\uc0dd \uc2dc \uc0c1\uc138\ud55c \uc815\ubcf4\ub97c \uae30\ub85d\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n
\ub9c8\uc9c0\ub9c9\uc73c\ub85c, \uc815\uae30\uc801\uc778 \ubc31\uc5c5 \ubc0f \ubcf5\uad6c \uacc4\ud68d\uc744 \uc138\uc6cc \ub370\uc774\ud130 \uc190\uc2e4\uc5d0 \ub300\ube44\ud574\uc57c \ud569\ub2c8\ub2e4. Solr\uc5d0\uc11c\ub294 \uc0c9\uc778 \ub370\uc774\ud130\ub97c \ubc31\uc5c5\ud558\uace0 \ubcf5\uad6c\ud558\ub294 \uae30\ub2a5\uc744 \uc81c\uacf5\ud558\ubbc0\ub85c, \uc774\ub97c \ud65c\uc6a9\ud558\uc5ec \uc548\uc804\ud55c \ub370\uc774\ud130 \uad00\ub9ac\ub97c \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n
7. \uc2e4\uc81c \uc0ac\ub840 \uc5f0\uad6c: Spring Boot\uc640 Apache Solr \ud1b5\ud569 \uc0ac\ub840<\/h2>\n
\uc774\uc81c Spring Boot\uc640 Apache Solr\ub97c \ud65c\uc6a9\ud55c \uc2e4\uc81c \uc0ac\ub840\ub97c \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4. A \uae30\uc5c5\uc740 \ub300\uaddc\ubaa8 \uc804\uc790\uc0c1\uac70\ub798 \ud50c\ub7ab\ud3fc\uc744 \uc6b4\uc601\ud558\uace0 \uc788\uc73c\uba70, \uace0\uac1d\uc5d0\uac8c \ube60\ub974\uace0 \uc815\ud655\ud55c \uac80\uc0c9 \uacb0\uacfc\ub97c \uc81c\uacf5\ud558\uae30 \uc704\ud574 \uc774 \ub450 \uae30\uc220\uc744 \ud1b5\ud569\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n
A \uae30\uc5c5\uc740 \uba3c\uc800 Spring Boot\ub97c \uc0ac\uc6a9\ud558\uc5ec RESTful API\ub97c \uad6c\ucd95\ud558\uc600\uace0, \uc774\ub97c \ud1b5\ud574 \ud074\ub77c\uc774\uc5b8\ud2b8\uc640\uc758 \uc0c1\ud638\uc791\uc6a9\uc744 \uc6d0\ud65c\ud558\uac8c \ud588\uc2b5\ub2c8\ub2e4. \uc774\ud6c4 Apache Solr\ub97c \ub3c4\uc785\ud558\uc5ec \uc81c\ud488 \uc815\ubcf4\ub97c \uc0c9\uc778\ud654\ud558\uace0 \uac80\uc0c9 \uae30\ub2a5\uc744 \uad6c\ud604\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n
\ud2b9\ud788 A \uae30\uc5c5\uc740 \uc0ac\uc6a9\uc790 \ud589\ub3d9 \ubd84\uc11d \ub370\uc774\ud130\ub97c \ud65c\uc6a9\ud558\uc5ec \uac1c\uc778\ud654\ub41c \uac80\uc0c9 \uacb0\uacfc\ub97c \uc81c\uacf5\ud558\uae30 \uc704\ud574 Solr\uc758 Faceting \uae30\ub2a5\uc744 \uc801\uadf9 \ud65c\uc6a9\ud588\uc2b5\ub2c8\ub2e4. \uc774\ub97c \ud1b5\ud574 \uace0\uac1d\uc774 \uc120\ud638\ud558\ub294 \uc81c\ud488\uad70\uc744 \ud30c\uc545\ud558\uace0, \uad00\ub828 \uc81c\ud488\uc744 \ucd94\ucc9c\ud558\ub294 \uc2dc\uc2a4\ud15c\uc744 \uad6c\ucd95\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n
A \uae30\uc5c5\uc740 \ub610\ud55c \ucffc\ub9ac \uce90\uc2f1\uacfc \uc0c9\uc778 \ucd5c\uc801\ud654\ub97c \ud1b5\ud574 \uac80\uc0c9 \uc18d\ub3c4\ub97c \ud06c\uac8c \ud5a5\uc0c1\uc2dc\ucf30\uc2b5\ub2c8\ub2e4. \uacb0\uacfc\uc801\uc73c\ub85c \uace0\uac1d \ub9cc\uc871\ub3c4\uac00 \uc99d\uac00\ud558\uc600\uace0, \ub9e4\ucd9c\ub3c4 \uc0c1\uc2b9\ud558\ub294 \uae0d\uc815\uc801\uc778 \ud6a8\uacfc\ub97c \uc5bb\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n
\uc774 \uc0ac\ub840\ub294 Spring Boot\uc640 Apache Solr\uc758 \uac15\ub825\ud55c \uc870\ud569\uc774 \uc2e4\uc81c \ube44\uc988\ub2c8\uc2a4 \ud658\uacbd\uc5d0\uc11c\ub3c4 \ud6a8\uacfc\uc801\uc73c\ub85c \ud65c\uc6a9\ub420 \uc218 \uc788\uc74c\uc744 \ubcf4\uc5ec\uc90d\ub2c8\ub2e4. \ub2e4\uc74c \uc139\uc158\uc5d0\uc11c\ub294 \ud5a5\ud6c4 \ubc1c\uc804 \ubc29\ud5a5\uacfc \uacb0\ub860\uc744 \uc815\ub9ac\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n
8. \uacb0\ub860 \ubc0f \ud5a5\ud6c4 \ubc1c\uc804 \ubc29\ud5a5<\/h2>\n
Spring Boot\uc640 Apache Solr\ub97c \uc774\uc6a9\ud55c \uace0\uae09 \uac80\uc0c9 \uc5d4\uc9c4 \uad6c\ucd95\uc740 \ud604\ub300 \uc6f9 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \ud544\uc218\uc801\uc778 \uc694\uc18c\uc785\ub2c8\ub2e4. \uc774 \ub450 \uae30\uc220\uc758 \uacb0\ud569\uc740 \ube60\ub974\uace0 \uc815\ud655\ud55c \uac80\uc0c9 \uacb0\uacfc\ub97c \uc81c\uacf5\ud558\uba70, \uc0ac\uc6a9\uc790 \uacbd\ud5d8\uc744 \ud5a5\uc0c1\uc2dc\ud0a4\ub294 \ub370 \ud070 \uae30\uc5ec\ub97c \ud569\ub2c8\ub2e4.<\/p>\n
\uc55e\uc73c\ub85c\ub3c4 \ub370\uc774\ud130 \uc591\uc774 \uc99d\uac00\ud568\uc5d0 \ub530\ub77c \uac80\uc0c9 \uc5d4\uc9c4\uc758 \uc911\uc694\uc131\uc740 \ub354\uc6b1 \ucee4\uc9c8 \uac83\uc785\ub2c8\ub2e4. \ub530\ub77c\uc11c \uc9c0\uc18d\uc801\uc778 \uae30\uc220 \ubc1c\uc804\uacfc \ucd5c\uc801\ud654\uac00 \ud544\uc694\ud569\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, \uc778\uacf5\uc9c0\ub2a5(AI)\uacfc \uba38\uc2e0\ub7ec\ub2dd(ML)\uc744 \ud65c\uc6a9\ud55c \uac80\uc0c9 \uc54c\uace0\ub9ac\uc998 \uac1c\uc120\uc774 \uc774\ub8e8\uc5b4\uc9c8 \uac83\uc73c\ub85c \uc608\uc0c1\ub429\ub2c8\ub2e4.<\/p>\n
\ub610\ud55c, \ud074\ub77c\uc6b0\ub4dc \uae30\ubc18 \uc194\ub8e8\uc158\uc758 \ub3c4\uc785\uc774 \uc99d\uac00\ud558\uba74\uc11c \ubd84\uc0b0 \uac80\uc0c9 \uc2dc\uc2a4\ud15c\uc758 \ud544\uc694\uc131\uc774 \ub354\uc6b1 \uac15\uc870\ub420 \uac83\uc785\ub2c8\ub2e4. \uc774\ub97c \ud1b5\ud574 \ub300\uaddc\ubaa8 \ub370\uc774\ud130 \ucc98\ub9ac\uc640 \ub192\uc740 \uac00\uc6a9\uc131\uc744 \ub3d9\uc2dc\uc5d0 \ub2ec\uc131\ud560 \uc218 \uc788\uc744 \uac83\uc785\ub2c8\ub2e4.<\/p>\n
\uacb0\ub860\uc801\uc73c\ub85c, Spring Boot\uc640 Apache Solr\ub294 \uac15\ub825\ud55c \uac80\uc0c9 \uc5d4\uc9c4 \uad6c\ucd95\uc744 \uc704\ud55c \ud6cc\ub96d\ud55c \uc120\ud0dd\uc785\ub2c8\ub2e4. \uc774 \uae00\uc5d0\uc11c \ub2e4\ub8ec \ub0b4\uc6a9\uc744 \ubc14\ud0d5\uc73c\ub85c \uc5ec\ub7ec\ubd84\ub3c4 \uc131\uacf5\uc801\uc778 \uac80\uc0c9 \uc5d4\uc9c4 \uad6c\ucd95\uc5d0 \ub3c4\uc804\ud574 \ubcf4\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"
\ubaa9\ucc28 Spring Boot\uc640 Apache Solr\ub97c \uc774\uc6a9\ud55c \uace0\uae09 \uac80\uc0c9 \uc5d4\uc9c4 \uad6c\ucd95 1. Spring Boot\uc640 Apache Solr […]<\/p>\n","protected":false},"author":1,"featured_media":33704,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1957],"tags":[2058,2104,2079],"class_list":["post-50616","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development","tag-application","tag-data","tag-security"],"acf":[],"_links":{"self":[{"href":"https:\/\/hnu4c.shop\/blog\/wp-json\/wp\/v2\/posts\/50616","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hnu4c.shop\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hnu4c.shop\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hnu4c.shop\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hnu4c.shop\/blog\/wp-json\/wp\/v2\/comments?post=50616"}],"version-history":[{"count":0,"href":"https:\/\/hnu4c.shop\/blog\/wp-json\/wp\/v2\/posts\/50616\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hnu4c.shop\/blog\/wp-json\/wp\/v2\/media\/33704"}],"wp:attachment":[{"href":"https:\/\/hnu4c.shop\/blog\/wp-json\/wp\/v2\/media?parent=50616"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hnu4c.shop\/blog\/wp-json\/wp\/v2\/categories?post=50616"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hnu4c.shop\/blog\/wp-json\/wp\/v2\/tags?post=50616"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}