기타(framework)
2020.06.16 / 14:16

Apache Solr 6.6.5 + MariaDB 연동

코로나
추천 수 60

1. 진행과정    

    1) MariaDB 설치 및 MariaDB 드라이버 다운로드

    2) MariaDB에 테스트용 Table 생성 및 임시 데이타 입력

    3) Solr 와 MariaDB 연동을 위한 Solr 설정

    4) Solr start or restart

    5) Solr 인덱스 생성

    6) Solr 검색테스트


2. MariaDB 설치 및 MariaDB 드라이버 다운로드

  1) MariaDB 윈도우 설치는 https://mariadb.com/downloads/mariadb-tx 에서 파일을 다운로드 해서 설치만 하면 된다.

  2) MariaDB 드라이버는 https://mariadb.com/mariadb-tx-download 에서 다운로드 받아 압축을 풀어 

     jar파일(mariadb-java-client-버전.jar)이 나오면

     D:\Program\solr-6.6.5\server\solr-webapp\webapp\WEB-INF\lib 경로 하위에 붙여넣는다.


3. MariaDB에 테스트용 Table 생성 및 임시 데이타 입력

   1) 일단 solr 라는 데이타베이스를 생성한다. (본인이 원하는 데이타베이스에 만들어도 됨.)

      CREATE DATABASE 'solr'

   

   2) solr 라는 테이블 만들기 : 간단히 ID와 제품명만 관리하는 테이블을 만들고 제품명에 임이의 제품명들을 저장하도록 한다.

     - table 생성      

 

    CREATE TABLE 'solr_test' (

`id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',

`product_name` VARCHAR(200) NOT NULL DEFAULT '0' COMMENT 'Product Name',

PRIMARY KEY (`id`)

    )

    COLLATE='utf8_general_ci'

    ENGINE=InnoDB;


   

   3) 생성된 Solr테이블에 제품명을 몇개 insert한다. (id는 자동증가로 되어있어 궂이 입력하지 않아도 된다.)

      : 네이버 쇼핑에서 검색한 의류의 명칭을 몇개 조회해서 저장하도록 하겠다.


INSERT INTO solr_test (product_name) VALUES ('코튼모달 오렌지');

INSERT INTO solr_test (product_name) VALUES ('플로럴 끈 스트랩 조절 크롬 나시 탑');

INSERT INTO solr_test (product_name) VALUES ('여름 카브라 스트라이프 반팔티 루즈핏 3컬러');

INSERT INTO solr_test (product_name) VALUES ('레이어드 프릴 나시');

INSERT INTO solr_test (product_name) VALUES ('여름 나시 3컬러');

INSERT INTO solr_test (product_name) VALUES ('남성 바지');

     



4. Solr 와 MariaDB연동을 위한 설정

   1) 바로 앞 포스팅에서 나는 D:\Program\solr-6.6.5 경로에 Solr 폴더를 위치시켰다.

      그리고 dasdes라는 CORE를 생성시켜놓은 상태다.

      이제 D:\Program\solr-6.6.5\server\solr\dasdes\conf 하위에 있는 solrconfig.xml 파일을 수정해야 한다.

       solrconfig.xml 파일을 열어 제일 아래쪽으로 스크롤을 이동시키자.

      그런다음 </config> 코드 앞쪽(이전)에 아래코드를 붙여넣고 저장한다. 

  

  <lib dir="${solr.install.dir:../../../..}/contrib/dataimporthandler/lib" regex=".*\.jar" />

  <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />

  <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">

   <lst name="defaults">

   <str name="config">solr-data-config.xml</str>

   </lst>

  </requestHandler>


  

   2) 위 내용에 나오듯이 DB Connection과 table 조회쿼리가 저장될 solr-data-config.xml 파일을 생성 후 수정한다.

    - 생성위치 : D:\Program\solr-6.6.5\server\solr\dasdes\conf

    - solr-data-config.xml 의 내용  (DB 접속 아이디와 비밀번호는 solr/solr 로 만들어놓았음)

 

<?xml version="1.0" encoding="UTF-8" ?>


<dataConfig>

<dataSource driver="org.mariadb.jdbc.Driver" url="jdbc:mariadb://localhost:3306/solr?autoReconnect=true" 

  user="solr" password="solr" />

<document>

   <entity name="document" query="SELECT id, product_name FROM solr_test ">

    <field column="id" name="id" type="string" indexed="true" stored="true" required="true" multiValued="false"/>

    <field column="product_name" name="product_name" />

   </entity>

</document>


</dataConfig>



    3) Managed-schema 변경 (검색한 내용을 solr에서 인식하기 위한 설정)

     - 위치 : D:\Program\solr-6.6.5\server\solr\dasdes\conf

     - 추가사항 (위 조회항목은 id, product_name 두개인데 이미 "<field name" 이라고 되어있는 설정에 id 가 있어 

       product_name만 추가로 설정한다.

     - "<field name" 부분을 검색하여 다음 내용을 그 아래쪽에 붙여준다. (product_name 항목을 한국어 형태소로 처리하겠다는 설정)


<field name="product_name" type="txt_kr" indexed="true" stored="true"/>

  



5. Solr start or restart

   :D:\Program\solr-6.6.5\bin 에서 cmd창을 열어 다음 명령어 실행

   1) solr start

   2) 브라우저에서 http://localhost:8983/solr 로 접속해본다.

   3) 앞 포스팅에서 생성해놓은 dasdes CORE를 선택한 후 왼쪽메뉴의 "DataImport"메뉴를 선택한다.

   4) "Excute" 버튼을 눌러 MariaDB의 데이타를 땡겨온다.

  

  



6. Solr 검색테스트

   : 왼쪽 메뉴의 Query 를 이용하여 제대로 동작하는지 테스트 해본다.

   1) 전체조회 ==> Execute Query 만 클릭하면 된다.

    

      2) 두 단어가 모두 포함된 검색결과를 얻고싶을 때

         예) 여름과 나시 두 단어 모두 포함된 결과를 얻고자 할 때

              ==> product_name:나시 AND 여름 (만약 쇼핑몰일 경우 고객이 검색창에 "여름 나시"라고 입력했으면 space로 분리하여

                     그 space를 AND 형태로 변형하여 Solr 쿼리에 넘겨준다.)

         


    2) 기존 index를 모두 삭제하고 싶을 때

        http://localhost:8983/solr/[여기에 본인이 만든 core명을 입력한다.]/update?commit=true&stream.body=<delete><query>*</query></delete>


여기서는 core명을 dasdes로 했으니 아래와 같이 브라우저 url에 입력하면 되겠죠?

http://localhost:8983/solr/dasdes/update?commit=true&stream.body=<delete><query>*</query></delete>



출처: https://dodo-it.tistory.com/34?category=749271 [이것저것 해보기]