모듈: Mongoid::SearchIndexable::ClassMethods

다음에 정의됨:
lib/mongoid/search_indexable.rb

개요

기능의 클래스 수준 메서드에 대한 구현입니다.

인스턴스 메서드 요약 접기

인스턴스 메서드 세부 정보

#create_search_indexesArray<String>

등록된 모든 검색 인덱스의 생성을 요청합니다. 검색 인덱스는 비동기적으로 생성되며 완전히 사용하는 데 몇 분 정도 걸릴 수 있습니다.

반환합니다:

  • (Array<String>)

    검색 인덱스의 이름입니다.



65
66
67
68
69
# 파일 'lib/mongoid/search_indexable.rb', 줄 65

def create_search_indexes
  반환 만약 search_index_specs.비어 있나요?

  컬렉션.search_indexes.create_many(search_index_specs)
end

#remove_search_index(name: nil, ID: nil) ⇒ 객체

지정된 이름 또는 ID로 지정된 검색 인덱스 를 제거합니다. 이름 또는 ID 중 하나를 입력해야 하지만 둘 다 입력할 수는 없습니다.

매개변수:

  • 이름 (string | nil) (기본값: nil)

    제거 인덱스 의 이름

  • id (string | nil) (기본값: nil)

    제거 인덱스 의 ID



107
108
109
110
111
112
113
114
# 파일 'lib/mongoid/search_indexable.rb', 줄 107

def remove_search_index(이름: nil, ID: nil)
  로거.정보(
    "검색 인덱스: 컬렉션  ID' #{collection. 컬렉션}'에서 검색 인덱스 '#{ name ||ID } '
  )

  컬렉션.search_indexes.drop_one(이름: name, ID: ID)

#remove_search_indexes객체

참고:

검색 인덱스만 제거 할 수 있다면 좋을 것입니다.

등록된 모든 검색 인덱스의 제거를 요청합니다. 검색 인덱스는 비동기적으로 제거되며 완전히 삭제되는 데 몇 분 정도 걸릴 수 있습니다.

즉, 모델에서 선언된 인덱스이지만 모델이 인덱스 이름을 지정하지 못할 수 있기 때문에 해당 인덱스 의 이름이나 ID를 알 수 있다고 보장할 수 없습니다. 그러나 모델이 원하는 모든 검색 인덱스를 일대일로 선언하는 것이 의도이므로 모든 검색 인덱스를 제거해도 충분하다고 가정하는 것은 무리가 아닙니다. 특정 인덱스 또는 인덱스 설정하다 을 대신 제거해야 하는 경우 search_indexes.each를 remove_search_index와 함께 사용하는 것이 좋습니다.



128
129
130
131
132
# 파일 'lib/mongoid/search_indexable.rb', 줄 128

def remove_search_indexes
  search_indexes. do |사양|
    remove_search_index ID: 사양['ID']
  end
end

#search_index(name_or_defn, defn = nil) ⇒ 객체

제공된 단일 또는 복합 키에 대한 인덱스 정의를 추가합니다.

예시:

기본 인덱스 를 만듭니다.

class Person
  include Mongoid::Document
  field :name, type: String
  search_index({ ... })
  search_index :name_of_index, { ... }
end

매개변수:

  • name_or_defn (기호 | string | 해시)

    정의할 인덱스 의 이름이거나 인덱스 정의입니다.

  • defn (해시) (기본값: nil)

    검색 인덱스 정의입니다.



147
148
149
150
151
152
153
# 파일 'lib/mongoid/search_indexable.rb', 줄 147

def search_index(name_or_defn, defn = nil)
  이름 = name_or_defn
  이름, defn = nil, 이름 만약 이름.is_a?(해시)

  사양 = { 정의: defn }. { |s| s[:name] = 이름.to_s 만약 이름 }
  search_index_specs.push(사양)
end

#search_indexes(options = {}) ⇒ 객체

현재 모델의 컬렉션 에서 사용할 수 있는 검색 인덱스를 쿼리하기 위한 편리한 메서드입니다.

매개변수:

  • 옵션 (해시) (기본값: {})

    검색 인덱스 쿼리 에 전달할 옵션입니다.

옵션 해시(options):

  • :id (string)

    쿼리 할 특정 인덱스 의 ID(선택 사항)

  • :name (string)

    쿼리 할 특정 인덱스 의 이름(선택 사항)

  • :aggregate (해시)

    집계 명령에 전달할 옵션 해시(선택 사항)



98
99
100
# 파일 'lib/mongoid/search_indexable.rb', 줄 98

def search_indexes(옵션 = {})
  컬렉션.search_indexes(옵션)
end

#wait_for_search_indexes(names, 간격: 5) {|SearchIndexable::Status| ... } ⇒ 객체

명명된 검색 인덱스가 생성될 때까지 기다립니다.

매개변수:

  • 이름 (Array<String>)

    대기할 인덱스 이름 목록

  • interval (정수) (기본값: 5)

    다시 폴링하기 전에 대기할 시간(초)입니다(진행률 콜백 이 제공될 때만 사용됨).

수율:



78
79
80
81
82
83
84
85
86
# 파일 'lib/mongoid/search_indexable.rb', 줄 78

def wait_for_search_indexes(이름, interval: 5)
  루프 do
    상태 = 상태.신규(get_indexes(이름))
    yield 상태 만약 block_given?
    휴식 만약 상태.준비됐나요?

    sleep interval
  end
end