'2017/03'에 해당되는 글 6건

  1. 2017.03.31 [미미박스 검색이야기] 검색 홈 개인화 추천 서비스 오픈!!
  2. 2017.03.27 [Elasticsearch] Head plugin에서 Multi Cluster 연결하기 2
  3. 2017.03.22 [Elasticsearch] Java API 5.2 - Maven Dependency Module
  4. 2017.03.16 [미미박스 검색이야기] PC웹 검색 결과 내 검색어 추천 상품 제공
  5. 2017.03.15 [미미박스 검색이야기] 검색 결과 페이지 내 상세필터 기능 개선 되었습니다.
  6. 2017.03.09 [Elasticsearch] TransportClient on 5.x

[미미박스 검색이야기] 검색 홈 개인화 추천 서비스 오픈!!

ITWeb/미미박스검색이야기 2017. 3. 31. 16:07

3월의 마지막 드디어 미미박스 검색 홈에 개인화 추천 상품 서비스가 오픈이 되었습니다.


구경하러 가기)

https://m.search.memebox.com


추천 상품을 다양하게 보고 싶으시다면 검색 기능 활용을 많이 해보시면 좋습니다.

대부분의 추천 상품들은 협업필터를 이용해서 구성이 되어 있습니다.


2. 비슷한 취향의 고객님이 선택한 상품

이 기능은 user to user CF를 이용해서 추출 하였습니다.

저희는 데이터의 규모가 크지 않아서 sampling 을 100% 로 적용했습니다.


4. 많이 본 상품과 연관된 추천상품

이 기능은 item to item CF를 이용해서 추출 하였습니다.


각 추천 영역별 설명은 아래 이미지를 참고 하시면 됩니다.


※ 본 글은 회사의 입장과는 전혀 상관이 없으며 개인적인 의견으로 작성된 글 임을 알려 드립니다.

:

[Elasticsearch] Head plugin에서 Multi Cluster 연결하기

Elastic/Elasticsearch 2017. 3. 27. 15:43

head plugin 을 사용하면서 restful api 를 이용해서 elasticsearch cluster 정보를 얻어 올 수 있습니다.

다만, restful api 를 사용하기 위해서는 아래 설정을 각 노드에 해줘야 합니다.


참고문서)

https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-http.html

https://www.elastic.co/guide/en/elasticsearch/reference/2.4/modules-http.html


http.cors.enabled: true

http.cors.allow-origin: "*"

http.cors.allow-credentials: true


단, 주의 하셔야 하는 점은 해당 노드들이 외부로 노출 되어 있지 않다는 전체 조건이 있을 경우 위와 같이 사용하시기 바랍니다.


:

[Elasticsearch] Java API 5.2 - Maven Dependency Module

Elastic/Elasticsearch 2017. 3. 22. 16:07

5.x 로 업그레이드 되면서 몇 가지 바뀐 것들이 존재 합니다.

그 중 maven dependency 설정을 수정해 줘야 하는 것들이 있어서 그냥 기록해 봅니다.


참고문서)

https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/_maven_repository.html


<dependency>

    <groupId>org.elasticsearch.client</groupId>

    <artifactId>transport</artifactId>

    <version>5.2.2</version>

</dependency>


<dependency>

    <groupId>org.apache.logging.log4j</groupId>

    <artifactId>log4j-api</artifactId>

    <version>2.7</version>

</dependency>

<dependency>

    <groupId>org.apache.logging.log4j</groupId>

    <artifactId>log4j-core</artifactId>

    <version>2.7</version>

</dependency>


java api 사용하시는 분들은 위 설정을 추가해 주시면 에러 없이 잘 동작 할겁니다.

log4j2 설정 파일도 없으시다면 추가를 해주셔야 합니다.

:

[미미박스 검색이야기] PC웹 검색 결과 내 검색어 추천 상품 제공

ITWeb/미미박스검색이야기 2017. 3. 16. 12:33

작년 10월에 만들어 놨던 추천 데이터 마트 인데 이제야 겨우 PC웹에만 적용이 되었습니다.

우선 검색어 추천 상품은 어떻게 만들어 질까요?


기본 데이터 생성 로직은 아래와 같습니다.


Step 1)

검색을 한 사용자들의 검색어 로그를 수집 합니다.


Step 2)

검색 결과에서 클릭이 발생한 상품 정보를 수집 합니다.


Step 3)

검색어 + 클릭이 발생한 상품 정보에 대한 통계 분석을 하고 RDBS 에 저장 합니다.


Step 4) 

저장된 데이터를 서비스하기 위해 별도 색인 및 API 서버로 데이터를 제공 합니다.


이 과정을 거쳐 아래와 같은 결과가 나오게 됩니다.


검색어)

메이크업


결과)


사실 보통 검색어 별 최대 20개 까지의 추천 상품을 만들어 놓게 되는데요.

왜 3개만 보여 주고 있는지 저는 이해할 수 없지만, 추후 개선해 보자고 설득해 보려 합니다.

만들어진 데이터는 더보기 버튼을 넣어서 보여 주는게 더 좋겠다는 개인적인 생각 입니다.

더 보고 싶은 고객은 더 볼 것이고 보고 싶지 않은 고객은 안 볼 것이고 만들어 놓고 그냥 포기 하는건 지금도 이해가 잘 안되내요.


더 좋은 추천 상품을 제공 할 수 있도록 노력하겠습니다. ^^


※ 본 글은 회사의 입장과는 전혀 상관이 없으며 개인적인 의견으로 작성된 글 임을 알려 드립니다.


:

[미미박스 검색이야기] 검색 결과 페이지 내 상세필터 기능 개선 되었습니다.

ITWeb/미미박스검색이야기 2017. 3. 15. 16:46

오랜만에 미미박스 검색이야기를 올립니다.

기존에 제공 하던 narrow down 검색 방식에서 좀 더 고객 사용 편의를 위해 각 필터 항목별 종속 관계를 풀었습니다.

이유는 여러가지가 있겠지만 좀 더 많은 조건의 필터를 자유롭게 사용하도록 유도 하고 원하는 조건의 상품을 모아서 볼 수 있도록 하려는 의도였는데 잘 표현 되었는지 모르겠습니다. ^^;



[구경하기]



PC 웹에서는 이전 UI와 다르게 변경이 되어 있고 가격 필터 기능이 없었는데 추가 되었습니다.

모바일은 기존 narrow down 검색 방식에서 종속 관계만 기능적으로 정리해서 적용 되었습니다.

모바일도 검색상세필터 UI에 대한 개선이 필요 한데 이건 추후 빠르게 진행해 보도록 하겠습니다.


※ 본 글은 회사의 입장과는 전혀 상관이 없으며 개인적인 의견으로 작성된 글 임을 알려 드립니다.

:

[Elasticsearch] TransportClient on 5.x

Elastic/Elasticsearch 2017. 3. 9. 11:51

elasticsearch 2.4 에서 사용하던 java api 중 TransportClinet 사용 방법이 바뀌어서 작성 합니다.

변경된 내용에 대해서는 elasticsearch 공식 홈페이지에 자세히 나와 있습니다.


[참고문서]

https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/_maven_repository.html

https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/transport-client.html


[코드 변경]


2.x)

settings = settingsBuilder()

  .put("cluster.name", cluster)

  .put("client.transport.sniff", true)

  .put("network.tcp.blocking", false)           // tcp non-blocking mode

  .put("client.transport.ping_timeout", "10s")

  .build();


5.x)

settings = builder()

  .put("cluster.name", cluster)

  .put("client.transport.sniff", true)

  .put("network.tcp.blocking", false)           // tcp non-blocking mode

  .put("client.transport.ping_timeout", "10s")

  .build();


2.x)

TransportClient client = TransportClient.builder().settings(settings).build();


5.x)

TransportClient client = new PreBuiltTransportClient(settings);


여기서 주의 하실 점은 참고문서에 있지만  transport 가 분리 되었기 때문에 별도로 dependency 구성을 해주셔야 합니다.


Maven Dependency 추가)

<dependency>

  <groupId>org.elasticsearch.client</groupId>

  <artifactId>transport</artifactId>

  <version>${elasticsearch.version}</version>

</dependency>


별 내용은 아니지만 혹시라도 삽질 하시는 분들이 계실 수 있어 작성해 봤습니다.

: