[elixir! \ # 0033] elixir 프로젝트 에서 riak 데이터베이스 사용 하기 (2) - solr 검색 사용 하기

2747 단어 riak
0 편 -- RiakKV 설정 제1 편 -- CRDT 데이터 구조
solr
Solr 는 루 셀 기반 의 전체 텍스트 검색 서버 인 자바 5 개발 을 이용 한 고성능 이다.또한 이 를 확장 하여 Lucene 보다 더욱 풍부 한 조회 언어 를 제공 하 는 동시에 설정 가능 하고 확장 가능 하 며 조회 성능 을 > 최적화 시 켰 으 며 완벽 한 기능 관리 인터페이스 를 제공 하여 매우 우수한 전문 검색엔진 이다.
riak 에서 설정
riakKV 2.0 버 전 이상 에 solr 가 내장 되 어 있 습 니 다. 검색 기능 만 켜 면 됩 니 다.
vi /etc/riak/riak.conf

설치 하 다.
search = on

solr 가 접근 할 수 있 도록 /etc/hosts 파일 에 호스트 이름 (elixir 프로젝트 의 주소 와 같 음) 을 추가 해 야 합 니 다.
192.168.10.83    any_name

시동 걸 기 riak.
elixir 프로젝트 에서 사용
우선 counter 유형의 검색 방법 을 시도 해 보 겠 습 니 다. "player" 라 는 bucket 이 필요 합 니 다. 각 player 의 득점 score 가 포함 되 어 있 습 니 다.
지난번 에 설 정 된 elixir 프로젝트 를 시작 합 니 다.
$ iex -S mix
iex> Riak.Search.Index.put "scores"
:ok

riak 에서 Index 업데이트:
riak-admin bucket-type update counters '{"props":{"search_index":"scores"}}'

새로운 counter 추가:
iex> import RiakCounter
RiakCounter
iex> create_counter("people", "Kobe score", 10)
:ok
iex> create_counter("people", "James score", 12)
:ok
iex> change_counter("people", "Kobe score", 5)
:ok

현재, 우 리 는 "people" bucket 에 두 개 counter 를 추 가 했 습 니 다. 우 리 는 counter 와 같은 bucket-type 색인 scores 을 추 가 했 습 니 다. 그래서 검색 코드 를 작성 하 겠 습 니 다.
defmodule RiakApp.Search do
  @moduledoc false
  alias Riak.Search

  @doc false
  def search(index, query) do
    {:ok, {_, result, _, num_found}} = Search.query(index, query)
    {num_found, Enum.map(result, &get_value/1)}
  end


  defp get_value({_, data}) do
    bucket = :proplists.get_value("_yz_rb", data)
    type   = :proplists.get_value("_yz_rt", data)
    key    = :proplists.get_value("_yz_rk", data)
    value  = List.last(data)
    
    %{bucket: bucket, type: type, key: key, value: value}
  end
end

실행 해 보기:
iex> import RiakApp.Search                       
RiakApp.Search
iex> search("scores", "counter:[* TO 15]")
{2,
 [%{bucket: "people", key: "James score", type: "counters",
    value: {"counter", "12"}},
  %{bucket: "people", key: "Kobe score", type: "counters",
    value: {"counter", "15"}}]}

여기까지 하 자.

좋은 웹페이지 즐겨찾기