[Java] Array Value 존재 유무 확인하기

ITWeb/개발일반 2017.04.18 10:38

생각 나지 않을때가 많아서 퍼왔습니다.


Originanl Source)

http://www.programcreek.com/2014/04/check-if-array-contains-a-value-java/


public static boolean useList(String[] arr, String targetValue) {

  return Arrays.asList(arr).contains(targetValue);

}


public static boolean useSet(String[] arr, String targetValue) {

  Set<String> set = new HashSet<String>(Arrays.asList(arr));

  return set.contains(targetValue);

}


public static boolean useLoop(String[] arr, String targetValue) {

  for(String s: arr){

    if(s.equals(targetValue))

      return true;

  }

  return false;

}


public static boolean useArraysBinarySearch(String[] arr, String targetValue) { 

  int a =  Arrays.binarySearch(arr, targetValue);

  if(a > 0)

    return true;

  else

    return false;

}


binary search 가 제일 성능이 좋습니다.

단, 위 코드에서 빠진게 있다면 Arrays.sort(arr) 를 먼저 하고 하셔야 된다는 것입니다.


Arrays.sort(arr);

int a = Arrays.binarySearch(arr, targetValue);

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 : Comment 0

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

ITWeb/미미박스검색이야기 2017.03.31 16:07

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


구경하러 가기)

https://m.search.memebox.com


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

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


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

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

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


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

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


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


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

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 : Comment 0

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

Elastic/Elasticsearch 2017.03.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


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


저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 : Comment 0

[Elasticsearch] Java API 5.2 - Maven Dependency Module

Elastic/Elasticsearch 2017.03.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 설정 파일도 없으시다면 추가를 해주셔야 합니다.

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 : Comment 0

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

ITWeb/미미박스검색이야기 2017.03.16 12:33

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

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


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


Step 1)

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


Step 2)

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


Step 3)

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


Step 4) 

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


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


검색어)

메이크업


결과)


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

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

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

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


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


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


저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 : Comment 0

티스토리 툴바