[MONGODB] MongoDB를 텍스트 검색 및 여러 검색 단어
MONGODBMongoDB를 텍스트 검색 및 여러 검색 단어
나는 내 applicaiton에 전체 텍스트 기능을 제공하기 위해 사용하고 있음을 배열 "키"에 인덱스를 가지고있다.
2.4.3의 출시와 함께, 나는 "텍스트"인덱스 유형을 사용하고 싶습니다. 내 배열 "키"에 "텍스트"인덱스 유형을 보험과는 (예전 키워드 전체 텍스트 방식보다 빠르게) 빠른 작업 SUPER 보인다.
문제는 내 응용 프로그램은 필드가 포함 (AND) 있다고 가정한다. 기본적으로 텍스트는 논리합 내 매개 변수를 검색 할 수 있습니다.
포괄적 텍스트 검색을 실행할 수있는 방법을 사람의 노하우를합니까?
예를 들면 :
db.supplies.runCommand("text", {search:"printer ink"})
대신 어느 프린터 또는 잉크 모든 결과를 프린터의 잉크 모두에 결과를 반환한다.
해결법
-
==============================
1.시도에 보내기
시도에 보내기
db.supplies.runCommand("text", {search:"\"printer\" \"ink\""})
또한, 여기에 문서에서 인용입니다 :
희망이 도움이.
-
==============================
2.당신은 큰 따옴표로 각 단어를 포장 할 수 있습니다 :
당신은 큰 따옴표로 각 단어를 포장 할 수 있습니다 :
let keywords = ctx.params.query.split(/\s+/).map(kw => `"${kw}"`).join(' '); match.$text = { $search: keywords, $caseSensitive: false };
사용자가이 작동하지 않습니다 인용 된 문자열을 입력하면 단점이있다. 먼저 인용 문자열을 구문 분석해야 할 것이다.
-
==============================
3.@alecxe 앞서 지적한 바와 같이, 할 그리고 당신은 큰 따옴표로 각 검색 단어를 필요 텍스트 인덱스 열을 검색 할 수 있습니다. 다음은 귀하의 요구 사항에 대한 빠른 한 줄입니다.
@alecxe 앞서 지적한 바와 같이, 할 그리고 당신은 큰 따옴표로 각 검색 단어를 필요 텍스트 인덱스 열을 검색 할 수 있습니다. 다음은 귀하의 요구 사항에 대한 빠른 한 줄입니다.
db.supplies.runCommand("text", {search: "printer ink".split(" ").map(str => "\""+str+"\"").join(' ')})
-
==============================
4.여기에 내가 노드에 subwords를 사용하여 검색 할 만든 간단한 기능입니다. 누군가가 도움이되기를 바랍니다
여기에 내가 노드에 subwords를 사용하여 검색 할 만든 간단한 기능입니다. 누군가가 도움이되기를 바랍니다
이 프린터와 잉크를 만족해야하지만, $ 텍스트 검색 그래서 여기 내 간단한 함수입니다 허용하지 않습니다 그럼 PRI의 NKS에 대한 사용자 검색을 가정하자 :
var makeTextFilter = (text) => { var wordSplited = text.split(/\s+/); /** Regex generation for words */ var regToMatch = new RegExp(wordSplited.join("|"), 'gi'); let filter = []; searchFieldArray.map((item,i) => { filter.push({}); filter[i][item] = { $regex: regToMatch, $options: 'i' } }) return filter; }
이 같은 쿼리에서 사용
let query = {...query, $or: makeTextFilter(textInputFromUser)} tableName.find(query, function (err, cargo_list)
from https://stackoverflow.com/questions/16902674/mongodb-text-search-and-multiple-search-words by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 어떻게 효율적으로 여러 개의 키와 "별개"수행? (0) | 2019.12.08 |
---|---|
[MONGODB] 어떻게하여 MongoDB에서 '안처럼'연산자를 사용할 수 있습니다 (0) | 2019.12.08 |
[MONGODB] MongoDB의 쿼리에 주어진 키를 가진 레코드를 선택 (0) | 2019.12.08 |
[MONGODB] MongoDB의 서버를 시작할 수 없습니다 : 기본 스토리지 엔진 'wiredTiger은'mongod의이 빌드에 사용할 수 없습니다 (0) | 2019.12.07 |
[MONGODB] 명시 적으로 이름을 지정하지 않고 MongoDB의에서 모든 필드의 값을 검색 (0) | 2019.12.07 |