레일스에서 다시 검색하기
Redis의 v4부터 Redis 모듈을 도입했습니다. 이 모듈들은 Redis의 기능을 확장하기 위해 구축된 추가 구성 요소입니다.첫 번째 모듈 중 하나는 Redi Search입니다. Redis 위에 설치된 텍스트 검색 엔진입니다.기준 RediSearch.io:
Unlike other Redis search libraries, it does not use the internal data
structures of Redis like sorted sets. Using its own highly optimized data
structures and algorithms, it allows for advanced search features, high
performance, and low memory footprint. It can perform simple text searches, as
well as complex structured queries, filtering by numeric properties and
geographical distances. RediSearch supports continuous indexing with no
performance degradation, maintaining concurrent loads of querying and
indexing. This makes it ideal for searching frequently updated databases,
without the need for batch indexing and service interrupts.
RedSearch의 일부 제목 피쳐는 다음과 같습니다.
먼저 Redis 및 RedSearch 설치부터 시작합니다.Redis의 전체 설치 지침을 보려면 Redis.io 을 참조하십시오.자체 제작 소프트웨어가 있으면
brew install redis
할 수 있습니다.v1.6부터 다시 검색을 구성하려면 다음과 같이 하십시오.loadmodule /path/to/redisearch.so
를redis에 추가하는 것입니다.conf 파일은 항상 모듈을 불러옵니다.(macOS에서 redis.conf 파일은 /usr/local/etc/redis.conf
에 있습니다.conf 파일을 업데이트한 후 Redis를 다시 시작합니다.RedSearch 설치에 대한 자세한 내용은 를 참조하십시오RediSearch.io.또는 Docker와 함께 Redis 및 RedSearch를 실행할 수 있습니다.
Redis 및 RedSearch를 설치한 후 gem 파일에
docker run -p 6379:6379 redislabs/redisearch:latest
gem을 추가합니다.gem 'redi_search'
그리고 실행redi_search
.GitHub package registry에서도 설치할 수 있습니다.설치 후, Redis 연결을 설정하기 위해 초기값 설정 항목을 만들어야 합니다.
# config/initializers/redi_search.rb
RediSearch.configure do |config|
config.redis_config = {
host: "127.0.0.1",
port: "6379"
}
end
현재 우리의 응용 프로그램에 다시 검색이 있어서, 그것으로 색인 모델을 만들 수 있습니다.우리는 bundle install
및 User
속성을 가진 first
모델을 예로 사용할 것이다.class User < ApplicationRecord
redi_search schema: {
first: { text: { phonetic: "dm:en" } },
last: { text: { phonetic: "dm:en" } }
}
end
모델 내에서 last
클래스 방법을 호출하여 redi_search
라는 필수 명명 매개 변수를 받아들입니다.이것은 인덱스의 필드와 이 필드의 속성을 정의합니다.RedSearch에는 텍스트, 숫자, 지리적 위치 및 태그 필드가 있습니다.위에서 병음 옵션을 통과했습니다. 왜냐하면 우리는 이름을 색인하고 있기 때문입니다. 이것은 발음이 비슷하지만 맞춤법이 다른 이름을 검색하는 것을 더욱 쉽게 합니다.다양한 필드 유형의 사용 가능한 옵션의 전체 목록here을 찾을 수 있습니다.User.reindex
모델 내에서 schema
클래스를 호출하는 방법에는 다음과 같은 두 가지 유용한 방법이 추가되었습니다.redi_search
역할 영역이 데이터베이스reindex
sUser.search("jak")
현재 우리는 이미 모든 사용자를 위해 색인을 만들었으니, 우리는 그들을 검색하기 시작할 수 있다.쿼리는 ActiveRecord 인터페이스와 유사하며, 하위 문장과 조건을 연결할 수 있으며, 검색은 실행을 지연시킬 수 있습니다.. 간단한 질의는 다음과 같습니다.# simple phrase query - jak AND daxter
User.search("jak").and("daxter")
# exact phrase query - jak FOLLOWED BY daxter
User.search("jak daxter")
# union query - jak OR daxter
User.search("jak").or("daxter")
# negation query - jak AND NOT daxter
User.search("jak").and.not("daxter")
더 복잡한 질의는 다음과 같습니다.# intersection of unions - (hello OR halo) AND (world OR werld)
User.search(User.search("hello").or("halo")).and(User.search("world").or("werld"))
# negation of union - hello AND NOT (world or werld)
User.search("hello").and.not(User.search("world").or("werld"))
# union inside phrase - hello AND (world OR werld)
User.search("hello").and(User.search("world").or("werld"))
모든 용어는 적용 가능한 옵션을 지원합니다.접두사 용어: 접두사로 시작하는 모든 용어와 일치합니다.(SQL과 유사
search_import
User.search("hel", prefix: true)
User.search("hello worl", prefix: true)
User.search("hel", prefix: true).and("worl", prefix: true)
User.search("hello").and.not("worl", prefix: true)
옵션 약관: 옵션 약관을 포함하는 문서 순위가 옵션 약관을 포함하지 않은 문서보다 높음User.search("foo").and("bar", optional: true).and("baz", optional: true)
모호 항목: Levenshtein 거리에 따라 일치합니다.지원되는 최대 Levenshtein 거리는 3입니다.User.search("zuchini", fuzziness: 1)
또한 Document
자구를 사용하여 검색어의 범위를 특정 필드로 제한할 수 있습니다.# Simple field specific query
User.search.where(name: "john")
# Using where with options
User.search.where(first: "jon", fuzziness: 1)
# Using where with more complex query
User.search.where(first: User.search("bill").or("bob"))
검색 숫자 필드의 범위는 다음과 같습니다.User.search.where(number: 0..100)
# Searching to infinity
User.search.where(number: 0..Float::INFINITY)
User.search.where(number: -Float::INFINITY..0)
검색할 때 기본적으로 like term%
의 집합을 반환합니다.검색 쿼리 호출 where
은 검색을 실행하고 데이터베이스에서 찾은 모든 기록을 찾아 ActiveRecord 관계식으로 되돌려줍니다.또 다른 유용한 방법
Document
은 #results
을 추가하고 맞춤법 오류 검색어에 대한 조언을 제공합니다.User.spellcheck("jimy")
RediSearch (1.1ms) FT.SPELLCHECK user_idx jimy DISTANCE 1
=> [#<RediSearch::Spellcheck::Result:0x00007f805591c670
term: "jimy",
suggestions:
[#<struct RediSearch::Spellcheck::Suggestion score=0.0006849315068493151, suggestion="jimmy">,
#<struct RediSearch::Spellcheck::Suggestion score=0.00019569471624266145, suggestion="jim">]>]
User.spellcheck("jimy", distance: 2).first.suggestions
RediSearch (0.5ms) FT.SPELLCHECK user_idx jimy DISTANCE 2
=> [#<struct RediSearch::Spellcheck::Suggestion score=0.0006849315068493151, suggestion="jimmy">,
#<struct RediSearch::Spellcheck::Suggestion score=0.00019569471624266145, suggestion="jim">]
다음에 검색엔진을 찾으실 때 Red Search를 사용해 보세요!더 많은 옵션을 읽고 자술한 파일에서 더 많은 예제를 볼 수 있습니다.npezza93 / redi\u 검색
Ruby는 Rails와 통합할 수 있는 재검색을 포장했습니다.
다시 검색
RedSearch는 단순하지만 강력한 Ruby 패키지로,
Redis.
설치
먼저 Redis 및 RedSearch를 설치해야 합니다.
https://redis.io/download 에서 Redis를 다운로드하여 볼 수 있습니다.
설치 지침
here . 혹은
macOS 또는 Linux는 자체 제작 소프트웨어를 통해 설치할 수 있습니다.
설치 다시 검색 체크 아웃
https://oss.redislabs.com/redisearch/Quick_Start.html
재검색을 구축한 후 Docker를 사용하지 않으면 업데이트할 수 있습니다.
redis.conf 파일은 항상 다시 검색 모듈을 불러옵니다.redi_search
. (macOS에서 redis.conf 파일을 찾을 수 있습니다
atspellcheck
)
Redis 및 RedSearch가 시작되고 실행되면 다음 줄을
GEM 파일:
gem "redi\u 검색"
다음:
❯ 묶다
또는 직접 설치:
❯ gem 설치 redi\u 검색
요구 사항:
"redi\u 검색"필요
gem가 설치되어 필요하면 사용해야 합니다
Redis 구성만약 네가 궤도에 있다면, 이것은 마땅히...
View on GitHub
Reference
이 문제에 관하여(레일스에서 다시 검색하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/pezza/redisearch-on-rails-581p
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(레일스에서 다시 검색하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/pezza/redisearch-on-rails-581p텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)