MongoDB 및 Mongoose에서 전체 텍스트 검색을 수행하는 가장 좋은 방법
저는 수일 동안 Google에서 검색하고 있으며 많은 것을 시도했지만 여전히 내 사용자 컬렉션에 대해 좋은 전체 텍스트 검색을 수행 할 수 없습니다.
ElasticSearch를 시도했지만 쿼리 및 페이지 매김이 매우 불가능했습니다 ...
나는 ElMongo, mongoose-full-text, Mongoosastic 등과 같은 Mongoose 용 플러그인을 많이 시도했습니다. 모든 사람이 문서화되어 있고 전체 텍스트 검색을 수행하는 방법을 모르겠습니다.
따라서 내 컬렉션은 일반 컬렉션입니다.
user = {
name: String,
email: String,
profile: {
something: String,
somethingElse: String
}
}
나는 간단한있는 페이지의 검색 입력이 POST
나는 입력하면, hello world
전체 컬렉션에서 검색하는 것입니다 내가 필요한 내 검색 쿼리의 일치하는 단어를 필드와 결과를 얻을 수 있습니다.
페이지 당 10 개 항목 등의 페이지 매김을 처리하는 옵션이있는 것도 정말 좋을 것입니다.
이를 달성하는 가장 좋은 솔루션은 무엇입니까? 저는 Mongoose, NodeJS 및 ExpressJS와 함께 MongoDB 2.6. *을 사용하고 있습니다.
감사.
쿼리 에서 연산자 를 사용 하여 텍스트 인덱스에 포함 된 모든 필드를 검색 할 수있는 텍스트 인덱스 를 Mongoose 스키마 정의에 추가 할 수 있습니다 .$text
find
텍스트 검색을 지원하는 색인을 만들려면 다음 name
과 profile.something
같이 말하세요 .
var schema = new Schema({
name: String,
email: String,
profile: {
something: String,
somethingElse: String
}
});
schema.index({name: 'text', 'profile.something': 'text'});
또는 색인에 모든 문자열 필드를 포함하려면 '$**'
와일드 카드를 사용하십시오 .
schema.index({'$**': 'text'});
이렇게하면 다음과 같은 페이지 텍스트 검색 쿼리를 수행 할 수 있습니다.
MyModel.find({$text: {$search: searchString}})
.skip(20)
.limit(10)
.exec(function(err, docs) { ... });
자세한 내용은 전체 MongoDB 텍스트 인덱스 문서 를 참조하세요 .
검색 쿼리의 경우 Elasticsearch 플러그인을 사용할 수 있습니다. Elasticsearch에서는 실시간으로 지정된 기간으로 특정 텍스트와 문자열을 검색하기위한 사용자 지정 검색 쿼리를 만들 수 있습니다.
그러나 그 전에 MongoDB에있는 json 문서의 인덱싱을 만들어야합니다. MongoDB를 Elasticsearch 서버와 연결 한 다음 Elasticsearch의 강 기능을 사용하여 데이터의 Elasticsearch 서버에서 인덱싱을 수행 한 다음 검색을위한 사용자 지정 쿼리를 만들 수 있습니다.
'Programing' 카테고리의 다른 글
AngularJS의 라디오 버튼에 대해 ng-model이 작동하지 않습니다. (0) | 2020.11.21 |
---|---|
CSS flex, 첫 번째 줄에 하나의 항목을 표시하고 다음 줄에 두 개의 항목을 표시하는 방법 (0) | 2020.11.21 |
비트 프로그래밍에서 (숫자 및-숫자)는 무엇을 의미합니까? (0) | 2020.11.21 |
Rust에서 함수를 작성하는 방법은 무엇입니까? (0) | 2020.11.21 |
C #에서 트리를 순회하는 재귀 람다 식 (0) | 2020.11.21 |