모든 필드를 사용하여 자체 관리 배포서버에서 텍스트 인덱스 언어 지정
텍스트 인덱스의 언어는 텍스트 검색 쿼리를 실행할 때 어간 단어를 구문 분석하고 중지 단어를 무시하는 데 사용되는 규칙을 결정합니다.
기본적으로 텍스트 인덱스에 기본 언어 가 없는 경우 인덱스는 language
문서 필드를 사용하여 사용하는 언어를 결정합니다. 결과적으로 language
필드의 값은 문서 간에 변경될 수 있으므로 텍스트 인덱스는 단일 언어로 제한되지 않습니다.
인덱스가 언어를 결정하는 데 사용하는 필드를 변경할 수 있습니다. 이는 필드 이름이 영어로 되어 있지 않고 문서에 language
필드가 없는 경우에 유용합니다.
language
이외의 필드에 텍스트 인덱스 언어를 지정하려면 인덱스를 생성할 때 language_override
옵션을 포함합니다.
db.<collection>.createIndex( { <field> : "text" }, { language_override: "<field>" } )
텍스트 인덱스는 language_override
옵션에 지정된 필드를 사용하여 해당 문서에 사용할 언어를 결정합니다.
language_override
에 지정된 필드를 포함하지 않는 문서의 경우 인덱스는 영어를 언어로 사용합니다.
시작하기 전에
quotes
컬렉션을 생성합니다.
db.quotes.insertMany( [ { _id: 1, idioma: "portuguese", quote: "A sorte protege os audazes" }, { _id: 2, idioma: "spanish", quote: "Nada hay más surrealista que la realidad." }, { _id: 3, idioma: "english", quote: "is this a dagger which I see before me" } ] )
각 견적의 언어는 idioma
필드에 지정되어 있습니다.
절차
quote
필드에 텍스트 인덱스를 만듭니다. 텍스트 인덱스가 언어에 대해 idioma
필드를 사용하도록 하려면 language_override
옵션을 지정합니다.
db.quotes.createIndex( { quote : "text" }, { language_override: "idioma" } )
결과
인덱스는 quote
필드에 대한 텍스트 검색 쿼리를 지원하며 idioma
필드에 지정된 언어를 기반으로 하는 언어 규칙을 사용합니다. 각 문서는 idioma
필드에 서로 다른 값을 지정하며, 이는 각 문서가 서로 다른 언어 규칙으로 검색됨을 의미합니다.
다음 예시를 고려하십시오.
유효한 용어에 대한 Atlas Search
다음 쿼리는 audazes
string 을 검색합니다.
db.quotes.find( { $text: { $search: "audazes" } } )
출력:
[ { _id: 1, idioma: 'portuguese', quote: 'A sorte protege os audazes' } ]
앞의 쿼리는 쿼리를 수행하기 위해 포르투갈어를 언어로 사용합니다.
Atlas Search for stop word
다음 쿼리는 hay
string 을 검색합니다.
db.quotes.find( { $text: { $search: "hay" } } )
앞의 쿼리는 문서 _id: 2
의 quote
필드에 hay
string 이 나타나더라도 결과를 반환하지 않습니다.
문서 _id: 2
은(는) 스페인어를 지정합니다. hay
는 스페인어에서 중지 단어로 간주되므로 텍스트 인덱스에 포함되지 않습니다.
자세히 알아보기
텍스트 인덱스에 사용할 수 있는 언어를 확인하려면 자체 관리 배포서버의 텍스트 검색 언어를 참조하세요.
전체 텍스트 인덱스에 대한 기본 언어를 지정하는 방법을 알아보려면 자체 관리 배포서버에서 텍스트 인덱스에 대한 기본 언어 지정을 참조하세요.
텍스트 인덱스 제한 사항을 확인하려면 자체 관리 배포서버에 대한 텍스트 인덱스 제한 사항을 참조하세요.