Notice
Recent Posts
Recent Comments
ยซ   2024/11   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags more
Archives
Today
Total
๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐ŸŒฒ์ž๋ผ๋‚˜๋Š”์ฒญ๋…„

solr ๊ฒ€์ƒ‰์—”์ง„์˜ ์ „์ฒด์ ์ธ ํ๋ฆ„ ๋ณธ๋ฌธ

๊ฒ€์ƒ‰์—”์ง„

solr ๊ฒ€์ƒ‰์—”์ง„์˜ ์ „์ฒด์ ์ธ ํ๋ฆ„

JihyunLee 2019. 10. 25. 10:58
๋ฐ˜์‘ํ˜•

solr ๊ฒ€์ƒ‰์—”์ง„์˜ ์ „์ฒด์ ์ธ ํ๋ฆ„


solr ๋Š” ๋ฌด์—‡์ธ๊ฐ€

 

solr ๋Š”

๋ผ๊ณ  ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์— ๋‚˜์™€์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ์ œ๊ฐ€ ์‚ฌ์šฉํ•ด ๋ณธ solr๋Š” search๊ธฐ๋Šฅ๊ณผ indexing๊ธฐ๋Šฅ์ด ์•„์ฃผ ์ž˜ ๋˜์–ด์žˆ๋Š” ๋˜๋‹ค๋ฅธ DB๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

solr์—๋„ DB์ฒ˜๋Ÿผ ์ฟผ๋ฆฌ, index, table, column์ด ์žˆ๊ณ  ์ด๊ฒƒ๋“ค์€ DB์˜ ๊ฐœ๋…๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

 

solr์˜ ์ „์ฒด์ ์ธ ํ๋ฆ„

Analyzer, Tokenizer, Filter

solr์— ๊ฒ€์ƒ‰์–ด๊ฐ€ ๋“ค์–ด์˜ค๊ฑฐ๋‚˜, ์ €์žฅํ•ด์•ผ ํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด ์˜จ ๊ฒฝ์šฐ tokenํ™”(ํ˜•ํƒœ์†Œ ๋ถ„๋ฆฌ) -> ํ•„ํ„ฐ ์˜ ๊ณผ์ •์„ ๊ฑฐ์น˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์•„๋ž˜ ์ฝ”๋“œ๋Š” ์ด๋Ÿฌํ•œ ์ผ๋ จ์˜ tokenizer์™€ filter๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ถ€๋ถ„์ด๊ณ  ๊ฐ core์˜ *conf/managed-shema* ์—์„œ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

(๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ํƒœ๊ทธ์ธ FiledType์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ Indexing ๋ถ€๋ถ„์—์„œ ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.)

 

 

analyzer์— ๊ด€ํ•œ solr documentation

 

tokenizer์— ๊ด€ํ•œ solr documentation

 

filter์— ๊ด€ํ•œ solr documentation

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  <fieldType name="text_ko" class="solr.TextField" positionIncrementGap="100">
    <analyzer>
      <!-- ํ•œ๊ธ€ ํ† ํฐํ™” -->
      <tokenizer class="solr.KoreanTokenizerFactory" outputUnknownUnigrams="false" decompoundMode="discard"/>
      <!-- ๋™์˜์–ด -->
      <filter class="solr.SynonymGraphFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
      <!-- ์ œ์™ธํ•  ๋‹จ์–ด(์กฐ์‚ฌ) ํ•„ํ„ฐ๋ง-->
      <filter class="solr.StopFilterFactory" words="stopwords.txt"/>
      <filter class="solr.KoreanPartOfSpeechStopFilterFactory"/>
      <filter class="solr.KoreanReadingFormFilterFactory"/>
      <!-- ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ˜• -->
      <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
 
  </fieldType>
cs

 

 

๊ฐ ํ† ํฌ๋‚˜์ด์ €์™€, ํ•„ํ„ฐ๋ฅผ ๊ฑฐ์ณ๊ฐ€๋ฉฐ input์ด ๋‹จ๊ณ„๋ณ„๋กœ ๋ณ€ํ™”ํ•˜๋Š” ๋ชจ์Šต์€ localhost:8983/#/[core name] ์—์„œ ์™ผ์ชฝ์˜ Analysis ํ•ญ๋ชฉ์„ ํ†ตํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์•„๋ž˜ ์บก์ณํ™”๋ฉด์€, analysis ํ™”๋ฉด์—์„œ "์•ˆ๋…•ํ•˜์„ธ์š”, ๋ฐ˜๊ฐ€์›Œ์š”"๋ฅผ ์ž…๋ ฅํ–ˆ์„ ๋•Œ, ์–ด๋–ค ํ† ํฐ์ด ์ตœ์ข…์ ์œผ๋กœ ๋‚จ๋Š”์ง€ ๋ณด์—ฌ์ฃผ๋Š” ํ™”๋ฉด์ž…๋‹ˆ๋‹ค.

 

KT, SF ๊ฐ™์€*์˜์–ด์•ฝ์ž๋Š”* ๋“ค์€ ๊ฐ๊ฐ ํ† ํฌ๋‚˜์ด์ €์™€ ํ•„ํ„ฐ๋“ค์˜ ํด๋ž˜์Šค ์ค„์ž„๋ง์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

 

์˜ˆ๋ฅผ๋“ค์–ด KT ๋Š” koreanTokenizerFactory ์˜ ์ค„์ž„๋ง์ด๊ณ , LCF ๋Š” LowerCaseFilterFactory ์˜ ์ค„์ž„๋ง ์ž…๋‹ˆ๋‹ค.

ํ† ํฌ๋‚˜์ด์ €์™€ ํ•„ํ„ฐ๋ฅผ ํ†ตํ•ด ์ตœ์ข…์ ์œผ๋กœ '์•ˆ๋…• | ๋ฐ˜๊ฐ‘'์ด ์‚ด์•„ ๋‚จ์•˜๊ณ , ์ด ๋‘ ๋‹จ์–ด๊ฐ€ indexing์— ์‚ฌ์šฉ๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

Indexing

anlyzer๋ฅผ ํ†ตํ•ด์„œ ์ตœ์ข…์ ์œผ๋กœ '์•ˆ๋…•ํ•˜์„ธ์š”, ๋ฐ˜๊ฐ€์›Œ์š”'๋ผ๋Š” ๋ฌธ์žฅ์€ '์•ˆ๋…• | ๋ฐ˜๊ฐ‘' ์ด๋ผ๋Š” ํ† ํฐ์œผ๋กœ ์ €์žฅ๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค

DataBase ์˜ index ๊ฐœ๋…์ฒ˜๋Ÿผ, solr๋Š” Indexing ๋œ ๊ฒƒ์„ ๋ณด๊ณ  ์›๋ž˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค.

 

๋”ฐ๋ผ์„œ ์œ„์™€ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” '์›Œ์š”'๋ผ๋Š” ๊ฒ€์ƒ‰์–ด๋ฅผ ์ž…๋ ฅํ•ด๋„, '์•ˆ๋…•ํ•˜์„ธ์š”, ๋ฐ˜๊ฐ€์›Œ์š”' ๋ผ๋Š” ๋‚ด์šฉ์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋Œ€์‹  '์•ˆ๋…•', ์ด๋‚˜ '๋ฐ˜๊ฐ‘' ์˜ ๊ฒ€์ƒ‰์–ด๋ฅผ ์ž…๋ ฅํ•œ๋‹ค๋ฉด, '์•ˆ๋…•ํ•˜์„ธ์š”, ๋ฐ˜๊ฐ€์›Œ์š”' ๋‚ด์šฉ์„ ์ฐพ์„ ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

 

field

๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” field ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์€, ๊ฐ™์€ ํŒŒ์ผ์ธ *managed-schema* ์—์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค์ •ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ฐ field ๋Š” DB ์—์„œ์˜ ํ•œ column์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. filed ์˜ type์€ int, varchar๊ฐ™์€ ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ๋งํ•˜๋Š”๋ฐ ์ด type์— fieldType ์˜ name์„ ์ ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1
2
3
4
5
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
    <field name="round" type="text_ko" indexed="true" stored="true"  multiValued="true" />
 
    <field name="class" type="text_ko" indexed="true" stored="true"  multiValued="true" />
    <field name="question" type="text_ko" indexed="true" stored="true"  multiValued="true" />
cs

์—ฌ๊ธฐ์„œ

 

1
type = "text_ko"
cs

 

 

์˜ ์˜๋ฏธ๋Š” type์ด 'text_ko' ์ธ ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. type์— ๋”ฐ๋ผ ์–ด๋–ค ํ•„ํ„ฐ์™€, ํ† ํฌ๋‚˜์ด์ €๋ฅผ ๊ฑฐ์น  ๊ฒƒ์ธ์ง€๊ฐ€ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.

์œ„์—์„œ ์šฐ๋ฆฌ๋Š” 'text_ko' type์ด ์–ด๋–ป๊ฒŒ ์„ค์ •๋˜์–ด ์žˆ๋Š”์ง€ ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  <fieldType name="text_ko" class="solr.TextField" positionIncrementGap="100">
    <analyzer>
      <!-- ํ•œ๊ธ€ ํ† ํฐํ™” -->
      <tokenizer class="solr.KoreanTokenizerFactory" outputUnknownUnigrams="false" decompoundMode="discard"/>
      <!-- ๋™์˜์–ด -->
      <filter class="solr.SynonymGraphFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
      <!-- ์ œ์™ธํ•  ๋‹จ์–ด(์กฐ์‚ฌ) ํ•„ํ„ฐ๋ง-->
      <filter class="solr.StopFilterFactory" words="stopwords.txt"/>
      <filter class="solr.KoreanPartOfSpeechStopFilterFactory"/>
      <filter class="solr.KoreanReadingFormFilterFactory"/>
      <!-- ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ˜• -->
      <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
 
  </fieldType>
cs

 

question field dml field type ์ด 'text_ko'์ด๊ธฐ ๋•Œ๋ฌธ์—, question์„ indexingํ•œ๋‹ค๋ฉด, question์— ์žˆ๋Š” ๋‚ด์šฉ๋“ค์€ ์œ„์˜ ๋ณธ

tokenizer์™€ filter๋“ค์„ ํ†ตํ•ด indexing ๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

solr์—๋Š” ํ•œ๊ธ€ ๋ง๊ณ ๋„, ์„ธ๊ณ„ ๊ฐ๊ตญ์˜ ์–ธ์–ด๋“ค์— ๋Œ€ํ•ด analyzer๋ฅผ ์ง€์›ํ•ด ์ฃผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฌธ์ž์ธ์ง€, ์ˆซ์ž์ธ์ง€ , booleanํƒ€์ž…์ธ์ง€๋„ ๋‹ค์–‘ํ•˜๊ฒŒ ์ง€์› ํ•ด ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ํ•„์š”ํ•œ ๊ฒƒ์„ ๋งž์ถฐ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

(์‚ฌ์‹ค ์ตœ๊ทผ ์—…๋ฐ์ดํŠธ๋ถ€ํ„ฐ ํ•œ๊ธ€์„ ๊ธฐ๋ณธ์œผ๋กœ ์ง€์›ํ•ด ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค..! ๊ทธ๋ž˜์„œ ์ผ์ด ํ›จ์”ฌ ๊ฐ„๋‹จํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ๋งŒ์„ธ๐Ÿ˜†)

Indexing ๊ณผ ๊ฒ€์ƒ‰

solr์—์„œ๋Š” **'๊ฒ€์ƒ‰์ด ๋  ๋ฐ์ดํ„ฐ'** ์™€ **'๊ฒ€์ƒ‰์–ด'** ๋‘˜๋‹ค analyze ๊ณผ์ •์„ ๊ฑฐ์นฉ๋‹ˆ๋‹ค.

๋ฐฉ๊ธˆ ์‚ฌ์šฉํ•œ analysis ๋ฉ”๋‰ด์—์„œ ์™ผ์ชฝ ์ž…๋ ฅ์ฐฝ์€ '๊ฒ€์ƒ‰์ด ๋  ๋ฐ์ดํ„ฐ', ์˜ค๋ฅธ์ชฝ ์ž…๋ ฅ์ฐฝ์€ '๊ฒ€์ƒ‰์–ด'๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ text_ko filedType ์€ ๊ฒ€์ƒ‰๋  ๋ฐ์ดํ„ฐ ์™€ ๊ฒ€์ƒ‰์–ด์— ๋™์ผํ•œ analyzer๋ฅผ ์ ์šฉํ–ˆ์ง€๋งŒ

1
2
<analyzer type = "query">...</analyzer>
<analyzer type = "index">...</analyzer>
cs

์œ„์˜ ์ฝ”๋“œ์ฒ˜๋Ÿผ ์ฟผ๋ฆฌ์™€ ์ธ๋ฑ์Šค ํ•  ๋•Œ์˜ analyzer๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๊ฒ€์ƒ‰๋  ๋ฐ์ดํ„ฐ์™€ ๊ฒ€์ƒ‰์–ด๊ฐ€ analyzer๋ฅผ ๊ฑฐ์น˜๋Š” ๊ณผ์ •์€ analysis ๋ฉ”๋‰ด์—์„œ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

 

์™ผ์ชฝ์€ '์•ˆ๋…•ํ•˜์„ธ์š” ์ €๋Š” ์ปคํ”ผ๋ฅผ ์ข‹์•„ํ•ด์š”'๋ฅผ indexingํ•œ ๊ฒฐ๊ณผ์ด๊ณ , ์˜ค๋ฅธ์ชฝ์€ '์ปคํ”ผ๊ธฐ๊ณ„'๋ฅผ ๊ฒ€์ƒ‰ํ•œ ๋ชจ์Šต์ž…๋‹ˆ๋‹ค.

 

์ตœ์ข…์ ์œผ๋กœ

'์•ˆ๋…•ํ•˜์„ธ์š” ์ €๋Š” ์ปคํ”ผ๋ฅผ ์ข‹์•„ํ•ด์š”'๋ผ๋Š” ๋ฌธ์žฅ์€ **'์•ˆ๋…•|์ปคํ”ผ|์ข‹'** ํ† ํฐ์œผ๋กœ ์ธ๋ฑ์‹ฑ์ด ๋˜์—ˆ๊ณ ,

์ปคํ”ผ๊ธฐ๊ณ„๋Š”**'์ปคํ”ผ|๊ธฐ๊ณ„'**๋ผ๋Š” ํ† ํฐ์œผ๋กœ ๋‚˜๋ˆ„์–ด ์กŒ์Šต๋‹ˆ๋‹ค.

 

์ปคํ”ผ๊ธฐ๊ณ„์•ˆ์— '์ปคํ”ผ'๋ผ๋Š” ํ† ํฐ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, '์ปคํ”ผ๊ธฐ๊ณ„'๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ฉด '์•ˆ๋…•ํ•˜์„ธ์š” ์ €๋Š” ์ปคํ”ผ๋ฅผ ์ข‹์•„ํ•ด์š”'๋ผ๋Š” ๊ฒ€์ƒ‰๊ฒฐ๊ณผ

๊นŒ์ง€ ๋‚˜์˜ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ฒ€์ƒ‰ ๋ฐฉ๋ฒ•

์ด๋ ‡๊ฒŒ indexing๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์•„์ฃผ ์‰ฝ์Šต๋‹ˆ๋‹ค.

solr์„œ๋ฒ„์— http ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด solr์„œ๋ฒ„๋Š” jsonํ˜•ํƒœ๋กœ ์‘๋‹ต์„ ๋ณด๋‚ด์ฃผ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

DB์„œ๋ฒ„์— ์ฟผ๋ฆฌ๋ฅผ ์š”์ฒญํ•ด์„œ ์‘๋‹ต์„ ๋ฐ›์•„์˜ค๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ๋ง์ด์ฃ .

 

๋˜ํ•œ ์ง์ ‘ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑ ํ•  ํ•„์š” ์—†์ด localhost:8983/#/[core name] ์—์„œ query ๋ฉ”๋‰ด์˜ ์˜ค๋ฅธ์ชฝ ์œ— ๋ถ€๋ถ„์„ ๋ณด๋ฉด ์ฟผ๋ฆฌ๋ฅผ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.

 

์•„๋ž˜ ์บก์ณ ํ™”๋ฉด์€ query ๋ฉ”๋‰ด ํ™”๋ฉด์ž…๋‹ˆ๋‹ค. ํ™”๋ฉด์˜ ์˜ค๋ฅธ์ชฝ ์œ„์— ๋ณด์ด๋Š” url ์ฟผ๋ฆฌ ์—ญํ• ์„ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด url์„ ์ฃผ์†Œ์ฐฝ์— ์ž…๋ ฅํ•˜๋ฉด

 

๋™์ผํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋งŒ์•ฝ python์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด,

1
response = requests.get(URL).json()
cs

์„ ํ†ตํ•ด ๊ฐ„๋‹จํžˆ response ๋ฅผ ๋ฐ›์•„ ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

solr์˜ ์ฟผ๋ฆฌ๋Š” **์ด๋Ÿฐ๊ฒƒ๋„ ๋ผ?** ์‹ถ์„ ๋งŒํผ ๋‹ค์–‘ํ•œ ์ฟผ๋ฆฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

(์˜ˆ๋ฅผ๋“ค์–ด ํ•œ๊ธ€์ž ๋‹ค๋ฅธ ๊ฒ€์ƒ‰๊ฒฐ๊ณผ๊นŒ์ง€ ํฌํ•จ์‹œํ‚ค๊ฑฐ๋‚˜, field(=column) ์ง€์ •์—†์ด ๋ชจ๋“  filed ์—์„œ ๊ฒ€์ƒ‰ ๋“ฑ๋“ฑ)

๋‹ค์–‘ํ•œ ์ฟผ๋ฆฌ์— ๋Œ€ํ•œ ๋” ์ž์„ธํ•œ ์ง€์‹์€ documentation์„ ์ฝ์–ด๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

solr์˜ ๋‹ค์–‘ํ•œ query

์ถ”๊ฐ€

์œ„์—์„œ ์„ค๋ช…ํ•˜์ง€ ์•Š์€ ๋ถ€๋ถ„์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ DB์—์„œ ๋ฐ์ดํ„ฐ๋Š” ์–ด๋–ป๊ฒŒ ๊ฐ€์ ธ์˜ค๋Š”๊ฑฐ์ง€?

solr ๋Š” ๋‹ค์–‘ํ•œ ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ „ํ†ต์ ์ธ RDB๋ถ€ํ„ฐ jons, xml, NoSQL ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

 

์ €๋Š” ๊ทธ์ค‘ RDB์™€ solr๋ฅผ ์—ฐ๋™ํ•˜์˜€๊ณ , ์•„๋ž˜ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ๋„์›€์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

 

[์ฃผ์˜] : ํ•œ๊ธ€์ด๋ผ๋ฉด DB์˜ ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์— ์œ ์˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

 

๋„์›€์„ ๋ฐ›์€ ๋ธ”๋กœ๊ทธ

์ด ์™ธ์— ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ํ˜•์‹์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ฐฉ๋ฒ•์€ documentation์— ์„ค๋ช…์ด ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.

 

๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ํ˜•์‹ ๊ฐ€์ ธ์˜ค๊ธฐ

๐Ÿ‘

๋ฐ˜์‘ํ˜•

'๊ฒ€์ƒ‰์—”์ง„' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

solr ํ•œ๊ธ€ ๋™์˜์–ด ์ฒ˜๋ฆฌ ์œ ์˜์   (0) 2019.10.25
solr +์€์ „ํ•œ๋‹ข ์„ฑ๋Šฅ  (0) 2019.09.27