sdy

create initial project

1 +### 오픈 소스와 자연어 처리를 이용한 검색 쿼리 개선
2 +
3 +> 주제
4 +
5 +검색 엔진 오픈 소스인 Elasticsearch 와
6 +자연어 처리 사전 학습 모델인 BERT 를 이용 하여
7 +검색 쿼리를 개선 하는 방법에 대해 연구 한다.
8 +
9 +> 사용된 기술
10 +
11 +- Elasticsearch
12 +- BERT
13 +- Spring Boot
14 +
15 +
16 +> 상세 목표
17 +
18 +- Elasticsearch 에서 제공 하는 기본 자동 완성 기능 개선
19 +- 자연어 처리 모델인 BERT 를 통해 질문형 검색 쿼리 개발
20 +- Spring Boot 를 이용해 Elasticsearch 와 연동 하여 웹 검색 사이트 개발
...\ No newline at end of file ...\ No newline at end of file
1 +#!/bin/sh
2 +# ----------------------------------------------------------------------------
3 +# Licensed to the Apache Software Foundation (ASF) under one
4 +# or more contributor license agreements. See the NOTICE file
5 +# distributed with this work for additional information
6 +# regarding copyright ownership. The ASF licenses this file
7 +# to you under the Apache License, Version 2.0 (the
8 +# "License"); you may not use this file except in compliance
9 +# with the License. You may obtain a copy of the License at
10 +#
11 +# https://www.apache.org/licenses/LICENSE-2.0
12 +#
13 +# Unless required by applicable law or agreed to in writing,
14 +# software distributed under the License is distributed on an
15 +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 +# KIND, either express or implied. See the License for the
17 +# specific language governing permissions and limitations
18 +# under the License.
19 +# ----------------------------------------------------------------------------
20 +
21 +# ----------------------------------------------------------------------------
22 +# Maven Start Up Batch script
23 +#
24 +# Required ENV vars:
25 +# ------------------
26 +# JAVA_HOME - location of a JDK home dir
27 +#
28 +# Optional ENV vars
29 +# -----------------
30 +# M2_HOME - location of maven2's installed home dir
31 +# MAVEN_OPTS - parameters passed to the Java VM when running Maven
32 +# e.g. to debug Maven itself, use
33 +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
34 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files
35 +# ----------------------------------------------------------------------------
36 +
37 +if [ -z "$MAVEN_SKIP_RC" ] ; then
38 +
39 + if [ -f /etc/mavenrc ] ; then
40 + . /etc/mavenrc
41 + fi
42 +
43 + if [ -f "$HOME/.mavenrc" ] ; then
44 + . "$HOME/.mavenrc"
45 + fi
46 +
47 +fi
48 +
49 +# OS specific support. $var _must_ be set to either true or false.
50 +cygwin=false;
51 +darwin=false;
52 +mingw=false
53 +case "`uname`" in
54 + CYGWIN*) cygwin=true ;;
55 + MINGW*) mingw=true;;
56 + Darwin*) darwin=true
57 + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
58 + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
59 + if [ -z "$JAVA_HOME" ]; then
60 + if [ -x "/usr/libexec/java_home" ]; then
61 + export JAVA_HOME="`/usr/libexec/java_home`"
62 + else
63 + export JAVA_HOME="/Library/Java/Home"
64 + fi
65 + fi
66 + ;;
67 +esac
68 +
69 +if [ -z "$JAVA_HOME" ] ; then
70 + if [ -r /etc/gentoo-release ] ; then
71 + JAVA_HOME=`java-config --jre-home`
72 + fi
73 +fi
74 +
75 +if [ -z "$M2_HOME" ] ; then
76 + ## resolve links - $0 may be a link to maven's home
77 + PRG="$0"
78 +
79 + # need this for relative symlinks
80 + while [ -h "$PRG" ] ; do
81 + ls=`ls -ld "$PRG"`
82 + link=`expr "$ls" : '.*-> \(.*\)$'`
83 + if expr "$link" : '/.*' > /dev/null; then
84 + PRG="$link"
85 + else
86 + PRG="`dirname "$PRG"`/$link"
87 + fi
88 + done
89 +
90 + saveddir=`pwd`
91 +
92 + M2_HOME=`dirname "$PRG"`/..
93 +
94 + # make it fully qualified
95 + M2_HOME=`cd "$M2_HOME" && pwd`
96 +
97 + cd "$saveddir"
98 + # echo Using m2 at $M2_HOME
99 +fi
100 +
101 +# For Cygwin, ensure paths are in UNIX format before anything is touched
102 +if $cygwin ; then
103 + [ -n "$M2_HOME" ] &&
104 + M2_HOME=`cygpath --unix "$M2_HOME"`
105 + [ -n "$JAVA_HOME" ] &&
106 + JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
107 + [ -n "$CLASSPATH" ] &&
108 + CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
109 +fi
110 +
111 +# For Mingw, ensure paths are in UNIX format before anything is touched
112 +if $mingw ; then
113 + [ -n "$M2_HOME" ] &&
114 + M2_HOME="`(cd "$M2_HOME"; pwd)`"
115 + [ -n "$JAVA_HOME" ] &&
116 + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
117 +fi
118 +
119 +if [ -z "$JAVA_HOME" ]; then
120 + javaExecutable="`which javac`"
121 + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
122 + # readlink(1) is not available as standard on Solaris 10.
123 + readLink=`which readlink`
124 + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
125 + if $darwin ; then
126 + javaHome="`dirname \"$javaExecutable\"`"
127 + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
128 + else
129 + javaExecutable="`readlink -f \"$javaExecutable\"`"
130 + fi
131 + javaHome="`dirname \"$javaExecutable\"`"
132 + javaHome=`expr "$javaHome" : '\(.*\)/bin'`
133 + JAVA_HOME="$javaHome"
134 + export JAVA_HOME
135 + fi
136 + fi
137 +fi
138 +
139 +if [ -z "$JAVACMD" ] ; then
140 + if [ -n "$JAVA_HOME" ] ; then
141 + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
142 + # IBM's JDK on AIX uses strange locations for the executables
143 + JAVACMD="$JAVA_HOME/jre/sh/java"
144 + else
145 + JAVACMD="$JAVA_HOME/bin/java"
146 + fi
147 + else
148 + JAVACMD="`which java`"
149 + fi
150 +fi
151 +
152 +if [ ! -x "$JAVACMD" ] ; then
153 + echo "Error: JAVA_HOME is not defined correctly." >&2
154 + echo " We cannot execute $JAVACMD" >&2
155 + exit 1
156 +fi
157 +
158 +if [ -z "$JAVA_HOME" ] ; then
159 + echo "Warning: JAVA_HOME environment variable is not set."
160 +fi
161 +
162 +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
163 +
164 +# traverses directory structure from process work directory to filesystem root
165 +# first directory with .mvn subdirectory is considered project base directory
166 +find_maven_basedir() {
167 +
168 + if [ -z "$1" ]
169 + then
170 + echo "Path not specified to find_maven_basedir"
171 + return 1
172 + fi
173 +
174 + basedir="$1"
175 + wdir="$1"
176 + while [ "$wdir" != '/' ] ; do
177 + if [ -d "$wdir"/.mvn ] ; then
178 + basedir=$wdir
179 + break
180 + fi
181 + # workaround for JBEAP-8937 (on Solaris 10/Sparc)
182 + if [ -d "${wdir}" ]; then
183 + wdir=`cd "$wdir/.."; pwd`
184 + fi
185 + # end of workaround
186 + done
187 + echo "${basedir}"
188 +}
189 +
190 +# concatenates all lines of a file
191 +concat_lines() {
192 + if [ -f "$1" ]; then
193 + echo "$(tr -s '\n' ' ' < "$1")"
194 + fi
195 +}
196 +
197 +BASE_DIR=`find_maven_basedir "$(pwd)"`
198 +if [ -z "$BASE_DIR" ]; then
199 + exit 1;
200 +fi
201 +
202 +##########################################################################################
203 +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
204 +# This allows using the maven wrapper in projects that prohibit checking in binary data.
205 +##########################################################################################
206 +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
207 + if [ "$MVNW_VERBOSE" = true ]; then
208 + echo "Found .mvn/wrapper/maven-wrapper.jar"
209 + fi
210 +else
211 + if [ "$MVNW_VERBOSE" = true ]; then
212 + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
213 + fi
214 + if [ -n "$MVNW_REPOURL" ]; then
215 + jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
216 + else
217 + jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
218 + fi
219 + while IFS="=" read key value; do
220 + case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
221 + esac
222 + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
223 + if [ "$MVNW_VERBOSE" = true ]; then
224 + echo "Downloading from: $jarUrl"
225 + fi
226 + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
227 + if $cygwin; then
228 + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"`
229 + fi
230 +
231 + if command -v wget > /dev/null; then
232 + if [ "$MVNW_VERBOSE" = true ]; then
233 + echo "Found wget ... using wget"
234 + fi
235 + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
236 + wget "$jarUrl" -O "$wrapperJarPath"
237 + else
238 + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath"
239 + fi
240 + elif command -v curl > /dev/null; then
241 + if [ "$MVNW_VERBOSE" = true ]; then
242 + echo "Found curl ... using curl"
243 + fi
244 + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
245 + curl -o "$wrapperJarPath" "$jarUrl" -f
246 + else
247 + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
248 + fi
249 +
250 + else
251 + if [ "$MVNW_VERBOSE" = true ]; then
252 + echo "Falling back to using Java to download"
253 + fi
254 + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
255 + # For Cygwin, switch paths to Windows format before running javac
256 + if $cygwin; then
257 + javaClass=`cygpath --path --windows "$javaClass"`
258 + fi
259 + if [ -e "$javaClass" ]; then
260 + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
261 + if [ "$MVNW_VERBOSE" = true ]; then
262 + echo " - Compiling MavenWrapperDownloader.java ..."
263 + fi
264 + # Compiling the Java class
265 + ("$JAVA_HOME/bin/javac" "$javaClass")
266 + fi
267 + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
268 + # Running the downloader
269 + if [ "$MVNW_VERBOSE" = true ]; then
270 + echo " - Running MavenWrapperDownloader.java ..."
271 + fi
272 + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
273 + fi
274 + fi
275 + fi
276 +fi
277 +##########################################################################################
278 +# End of extension
279 +##########################################################################################
280 +
281 +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
282 +if [ "$MVNW_VERBOSE" = true ]; then
283 + echo $MAVEN_PROJECTBASEDIR
284 +fi
285 +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
286 +
287 +# For Cygwin, switch paths to Windows format before running java
288 +if $cygwin; then
289 + [ -n "$M2_HOME" ] &&
290 + M2_HOME=`cygpath --path --windows "$M2_HOME"`
291 + [ -n "$JAVA_HOME" ] &&
292 + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
293 + [ -n "$CLASSPATH" ] &&
294 + CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
295 + [ -n "$MAVEN_PROJECTBASEDIR" ] &&
296 + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
297 +fi
298 +
299 +# Provide a "standardized" way to retrieve the CLI args that will
300 +# work with both Windows and non-Windows executions.
301 +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
302 +export MAVEN_CMD_LINE_ARGS
303 +
304 +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
305 +
306 +exec "$JAVACMD" \
307 + $MAVEN_OPTS \
308 + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
309 + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
310 + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
1 +@REM ----------------------------------------------------------------------------
2 +@REM Licensed to the Apache Software Foundation (ASF) under one
3 +@REM or more contributor license agreements. See the NOTICE file
4 +@REM distributed with this work for additional information
5 +@REM regarding copyright ownership. The ASF licenses this file
6 +@REM to you under the Apache License, Version 2.0 (the
7 +@REM "License"); you may not use this file except in compliance
8 +@REM with the License. You may obtain a copy of the License at
9 +@REM
10 +@REM https://www.apache.org/licenses/LICENSE-2.0
11 +@REM
12 +@REM Unless required by applicable law or agreed to in writing,
13 +@REM software distributed under the License is distributed on an
14 +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 +@REM KIND, either express or implied. See the License for the
16 +@REM specific language governing permissions and limitations
17 +@REM under the License.
18 +@REM ----------------------------------------------------------------------------
19 +
20 +@REM ----------------------------------------------------------------------------
21 +@REM Maven Start Up Batch script
22 +@REM
23 +@REM Required ENV vars:
24 +@REM JAVA_HOME - location of a JDK home dir
25 +@REM
26 +@REM Optional ENV vars
27 +@REM M2_HOME - location of maven2's installed home dir
28 +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
29 +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
30 +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
31 +@REM e.g. to debug Maven itself, use
32 +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
33 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
34 +@REM ----------------------------------------------------------------------------
35 +
36 +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
37 +@echo off
38 +@REM set title of command window
39 +title %0
40 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
41 +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
42 +
43 +@REM set %HOME% to equivalent of $HOME
44 +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
45 +
46 +@REM Execute a user defined script before this one
47 +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
48 +@REM check for pre script, once with legacy .bat ending and once with .cmd ending
49 +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
50 +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
51 +:skipRcPre
52 +
53 +@setlocal
54 +
55 +set ERROR_CODE=0
56 +
57 +@REM To isolate internal variables from possible post scripts, we use another setlocal
58 +@setlocal
59 +
60 +@REM ==== START VALIDATION ====
61 +if not "%JAVA_HOME%" == "" goto OkJHome
62 +
63 +echo.
64 +echo Error: JAVA_HOME not found in your environment. >&2
65 +echo Please set the JAVA_HOME variable in your environment to match the >&2
66 +echo location of your Java installation. >&2
67 +echo.
68 +goto error
69 +
70 +:OkJHome
71 +if exist "%JAVA_HOME%\bin\java.exe" goto init
72 +
73 +echo.
74 +echo Error: JAVA_HOME is set to an invalid directory. >&2
75 +echo JAVA_HOME = "%JAVA_HOME%" >&2
76 +echo Please set the JAVA_HOME variable in your environment to match the >&2
77 +echo location of your Java installation. >&2
78 +echo.
79 +goto error
80 +
81 +@REM ==== END VALIDATION ====
82 +
83 +:init
84 +
85 +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
86 +@REM Fallback to current working directory if not found.
87 +
88 +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
89 +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
90 +
91 +set EXEC_DIR=%CD%
92 +set WDIR=%EXEC_DIR%
93 +:findBaseDir
94 +IF EXIST "%WDIR%"\.mvn goto baseDirFound
95 +cd ..
96 +IF "%WDIR%"=="%CD%" goto baseDirNotFound
97 +set WDIR=%CD%
98 +goto findBaseDir
99 +
100 +:baseDirFound
101 +set MAVEN_PROJECTBASEDIR=%WDIR%
102 +cd "%EXEC_DIR%"
103 +goto endDetectBaseDir
104 +
105 +:baseDirNotFound
106 +set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
107 +cd "%EXEC_DIR%"
108 +
109 +:endDetectBaseDir
110 +
111 +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
112 +
113 +@setlocal EnableExtensions EnableDelayedExpansion
114 +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
115 +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
116 +
117 +:endReadAdditionalConfig
118 +
119 +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
120 +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
121 +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
122 +
123 +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
124 +
125 +FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
126 + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
127 +)
128 +
129 +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
130 +@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
131 +if exist %WRAPPER_JAR% (
132 + if "%MVNW_VERBOSE%" == "true" (
133 + echo Found %WRAPPER_JAR%
134 + )
135 +) else (
136 + if not "%MVNW_REPOURL%" == "" (
137 + SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
138 + )
139 + if "%MVNW_VERBOSE%" == "true" (
140 + echo Couldn't find %WRAPPER_JAR%, downloading it ...
141 + echo Downloading from: %DOWNLOAD_URL%
142 + )
143 +
144 + powershell -Command "&{"^
145 + "$webclient = new-object System.Net.WebClient;"^
146 + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
147 + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
148 + "}"^
149 + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
150 + "}"
151 + if "%MVNW_VERBOSE%" == "true" (
152 + echo Finished downloading %WRAPPER_JAR%
153 + )
154 +)
155 +@REM End of extension
156 +
157 +@REM Provide a "standardized" way to retrieve the CLI args that will
158 +@REM work with both Windows and non-Windows executions.
159 +set MAVEN_CMD_LINE_ARGS=%*
160 +
161 +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
162 +if ERRORLEVEL 1 goto error
163 +goto end
164 +
165 +:error
166 +set ERROR_CODE=1
167 +
168 +:end
169 +@endlocal & set ERROR_CODE=%ERROR_CODE%
170 +
171 +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
172 +@REM check for post script, once with legacy .bat ending and once with .cmd ending
173 +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
174 +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
175 +:skipRcPost
176 +
177 +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
178 +if "%MAVEN_BATCH_PAUSE%" == "on" pause
179 +
180 +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
181 +
182 +exit /B %ERROR_CODE%
1 +<?xml version="1.0" encoding="UTF-8"?>
2 +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4 + <modelVersion>4.0.0</modelVersion>
5 + <parent>
6 + <groupId>org.springframework.boot</groupId>
7 + <artifactId>spring-boot-starter-parent</artifactId>
8 + <version>2.4.4</version>
9 + <relativePath/> <!-- lookup parent from repository -->
10 + </parent>
11 + <groupId>com.esboot</groupId>
12 + <artifactId>bert-search</artifactId>
13 + <version>0.0.1-SNAPSHOT</version>
14 + <name>bert-searcher</name>
15 + <description>Search Program with elasticsearch, spring boot and BERT</description>
16 + <properties>
17 + <java.version>11</java.version>
18 + </properties>
19 + <dependencies>
20 + <dependency>
21 + <groupId>org.springframework.boot</groupId>
22 + <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
23 + </dependency>
24 + <dependency>
25 + <groupId>org.springframework.boot</groupId>
26 + <artifactId>spring-boot-starter-thymeleaf</artifactId>
27 + </dependency>
28 + <dependency>
29 + <groupId>org.springframework.boot</groupId>
30 + <artifactId>spring-boot-starter-web</artifactId>
31 + </dependency>
32 +
33 + <dependency>
34 + <groupId>org.springframework.boot</groupId>
35 + <artifactId>spring-boot-devtools</artifactId>
36 + <scope>runtime</scope>
37 + <optional>true</optional>
38 + </dependency>
39 + <dependency>
40 + <groupId>org.projectlombok</groupId>
41 + <artifactId>lombok</artifactId>
42 + <optional>true</optional>
43 + </dependency>
44 + <dependency>
45 + <groupId>org.springframework.boot</groupId>
46 + <artifactId>spring-boot-starter-test</artifactId>
47 + <scope>test</scope>
48 + </dependency>
49 + </dependencies>
50 +
51 + <build>
52 + <plugins>
53 + <plugin>
54 + <groupId>org.springframework.boot</groupId>
55 + <artifactId>spring-boot-maven-plugin</artifactId>
56 + <configuration>
57 + <excludes>
58 + <exclude>
59 + <groupId>org.projectlombok</groupId>
60 + <artifactId>lombok</artifactId>
61 + </exclude>
62 + </excludes>
63 + </configuration>
64 + </plugin>
65 + </plugins>
66 + </build>
67 +
68 +</project>
1 +package com.esboot.bertsearch;
2 +
3 +import org.springframework.boot.SpringApplication;
4 +import org.springframework.boot.autoconfigure.SpringBootApplication;
5 +
6 +@SpringBootApplication
7 +public class BertSearcherApplication {
8 +
9 + public static void main(String[] args) {
10 + SpringApplication.run(BertSearcherApplication.class, args);
11 + }
12 +
13 +}
1 +package com.esboot.bertsearch.config;
2 +
3 +import org.elasticsearch.client.RestHighLevelClient;
4 +import org.springframework.context.annotation.Bean;
5 +import org.springframework.context.annotation.Configuration;
6 +import org.springframework.data.elasticsearch.client.ClientConfiguration;
7 +import org.springframework.data.elasticsearch.client.RestClients;
8 +import org.springframework.data.elasticsearch.config.AbstractElasticsearchConfiguration;
9 +
10 +@Configuration
11 +public class RestClientConfig extends AbstractElasticsearchConfiguration {
12 +
13 + @Override
14 + @Bean
15 + public RestHighLevelClient elasticsearchClient() {
16 + ClientConfiguration clientConfiguration = ClientConfiguration.builder().connectedTo("localhost:9200").build();
17 +
18 + return RestClients.create(clientConfiguration).rest();
19 + }
20 +}
1 +package com.esboot.bertsearch.controller;
2 +
3 +import org.springframework.stereotype.Controller;
4 +import org.springframework.web.bind.annotation.GetMapping;
5 +
6 +@Controller
7 +public class HomeController {
8 +
9 + @GetMapping("/home")
10 + public String showHome() {
11 + return "home-page";
12 + }
13 +}
1 +package com.esboot.bertsearch.controller;
2 +
3 +import com.esboot.bertsearch.dto.Phone;
4 +import com.esboot.bertsearch.repository.PhoneRepository;
5 +import org.elasticsearch.search.aggregations.metrics.InternalHDRPercentiles;
6 +import org.springframework.web.bind.annotation.GetMapping;
7 +import org.springframework.web.bind.annotation.PathVariable;
8 +import org.springframework.web.bind.annotation.RequestMapping;
9 +import org.springframework.web.bind.annotation.RestController;
10 +
11 +@RestController
12 +@RequestMapping("/api")
13 +public class TestController {
14 +
15 + private final PhoneRepository phoneRepository;
16 +
17 + public TestController(PhoneRepository phoneRepository) {
18 + this.phoneRepository = phoneRepository;
19 + }
20 +
21 + @GetMapping("/phones")
22 + public Iterable<Phone> findAllPhones() {
23 + return phoneRepository.findAll();
24 + }
25 +
26 + @GetMapping("/phones/{model}")
27 + public Iterable<Phone> findByModel(@PathVariable String model) {
28 + return phoneRepository.findByModel(model);
29 + }
30 +}
1 +package com.esboot.bertsearch.dto;
2 +
3 +import lombok.AllArgsConstructor;
4 +import lombok.Data;
5 +import lombok.NoArgsConstructor;
6 +import org.springframework.data.annotation.Id;
7 +import org.springframework.data.elasticsearch.annotations.Document;
8 +import org.springframework.data.elasticsearch.annotations.Field;
9 +import org.springframework.data.elasticsearch.annotations.FieldType;
10 +
11 +@Data
12 +@NoArgsConstructor
13 +@AllArgsConstructor
14 +@Document(indexName = "phones")
15 +public class Phone {
16 +
17 + @Id
18 + private String id;
19 +
20 + @Field(name = "model", type = FieldType.Text)
21 + private String model;
22 +
23 + @Field(name = "price", type = FieldType.Integer)
24 + private int price;
25 +
26 + @Field(name = "date", type = FieldType.Text)
27 + private String date;
28 +}
1 +package com.esboot.bertsearch.repository;
2 +
3 +import com.esboot.bertsearch.dto.Phone;
4 +import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
5 +
6 +public interface PhoneRepository extends ElasticsearchRepository<Phone, String> { // DTO, PK
7 + Iterable<Phone> findByModel(String model);
8 +}
1 +body {
2 + background: black;
3 +}
4 +.container {
5 + width: 60%;
6 + margin: 10px auto;
7 + background: #333;
8 + border-radius: 6px;
9 + overflow: hidden;
10 + box-shadow: 0 0 4px rgba(0, 0, 0, 0.4), 0 4px 4px rgba(0, 0, 0, 0.2);
11 +}
12 +.container input {
13 + text-align: center;
14 + width: 100%;
15 + background: transparent;
16 + border: 0;
17 + font-size: 30px;
18 + color: #fff;
19 +}
20 +.suggestions {
21 + border-top: 2px solid #999;
22 +}
23 +.suggestions > div {
24 + padding: 15px;
25 + font-size: 20px;
26 + color: #fff;
27 + border-top: 1px solid #666;
28 + cursor: pointer;
29 +}
30 +.suggestions > div:hover {
31 + background-color: #1e4dd4;
32 +}
33 +.emphy {
34 + width: 50%;
35 + margin: 40px auto;
36 + text-align: center;
37 + color: #fff;
38 +}
...\ No newline at end of file ...\ No newline at end of file
1 +const countries = [
2 + {name: 'USA'},
3 + {name: 'India'},
4 + {name: 'Argentina'},
5 + {name: 'Armenia'},
6 + {name: "korea"},
7 + {name: "lorem ipsum test filter"}
8 +];
9 +
10 +const searchInput = document.querySelector('.search-input');
11 +const suggestionsPanel = document.querySelector('.suggestions');
12 +
13 +searchInput.addEventListener('keyup', function() {
14 + const input = searchInput.value;
15 + suggestionsPanel.innerHTML = '';
16 + const suggestions = countries.filter(function(country) {
17 + return country.name.toLowerCase().startsWith(input);
18 + });
19 + suggestions.forEach(function(suggested) {
20 + const div = document.createElement('div');
21 + div.innerHTML = suggested.name;
22 + suggestionsPanel.appendChild(div);
23 + });
24 + if (input === '') {
25 + suggestionsPanel.innerHTML = '';
26 + }
27 +})
...\ No newline at end of file ...\ No newline at end of file
1 +<!DOCTYPE html>
2 +<html lang="en">
3 +
4 + <head>
5 + <title>Home Page</title>
6 + <link rel="stylesheet" href="css/home.css"/>
7 + </head>
8 +
9 + <body>
10 + <p class="emphy">Type anything</p>
11 + <div class="container">
12 + <input class="search-input" type="text" placeholder="Search here..." />
13 + <div class="suggestions">
14 + </div>
15 + </div>
16 +
17 + <script src="js/main.js"></script>
18 + </body>
19 +
20 +</html>
...\ No newline at end of file ...\ No newline at end of file
1 +package com.esboot.bertsearch;
2 +
3 +import org.junit.jupiter.api.Test;
4 +import org.springframework.boot.test.context.SpringBootTest;
5 +
6 +@SpringBootTest
7 +class BertSearcherApplicationTests {
8 +
9 + @Test
10 + void contextLoads() {
11 + }
12 +
13 +}