Las siguientes opciones de modificación de puntaje están disponibles para todos los operadores. Para detalles y ejemplos, haz clic en cualquiera de las siguientes opciones:
boost
La opción boost multiplica la puntuación base de un resultado por un número dado o por el valor de un campo numérico en los documentos. Por ejemplo, se puede utilizar boost para aumentar la importancia de ciertos documentos coincidentes en el resultado.
Nota
No puedes usar las opciones
boostyconstantjuntas.La
boostopción conpathes lo mismo que multiplicar usando la opción confunctionuna expresión de ruta.
Campos
La opción boost toma los siguientes campos:
Campo | Tipo | Necesidad | Descripción |
|---|---|---|---|
| float | Condicional | Número por el cual multiplicar la puntuación base por defecto. El valor debe ser un número positivo. Se requiere |
| string | Condicional | Nombre del campo numérico cuyo valor se debe multiplicar por la puntuación base por defecto. Se requiere |
| float | Opcional | Valor numérico para reemplazar |
Ejemplos
Los siguientes ejemplos utilizan la colección movies en la base de datos sample_mflix. Si tienes el conjunto de datos de muestra en tu clúster, puedes crear el índice de MongoDB Search default y ejecutar las consultas de ejemplo en tu clúster.
Las queries compuestas de muestra demuestran cómo aumentar la importancia de un criterio de búsqueda sobre otro. Las consultas incluyen una etapa $project para excluir todos los campos excepto title y score.
En el siguiente ejemplo, el operador compuesto utiliza el operador de texto para buscar el término Helsinki en los campos plot y title. La query para el campo title usa score con la opción boost para multiplicar los resultados de la puntuación por 3, tal como se especifica en el campo value.
1 db.movies.aggregate([ 2 { 3 "$search": { 4 "compound": { 5 "should": [{ 6 "text": { 7 "query": "Helsinki", 8 "path": "plot" 9 } 10 }, 11 { 12 "text": { 13 "query": "Helsinki", 14 "path": "title", 15 "score": { "boost": { "value": 3 } } 16 } 17 }] 18 } 19 } 20 }, 21 { 22 "$limit": 5 23 }, 24 { 25 "$project": { 26 "_id": 0, 27 "title": 1, 28 "plot": 1, 29 "score": { "$meta": "searchScore" } 30 } 31 } 32 ])
Esta query devuelve los siguientes resultados, en los que la puntuación de los documentos donde el title coincide con el término de consulta se multiplica por 3 desde su valor base:
[ { plot: 'Epic tale about two generations of men in a wealthy Finnish family, spanning from the 1960s all the way through the early 1990s. The father has achieved his position as director of the ...', title: 'Kites Over Helsinki', score: 12.2470121383667 }, { plot: 'Alex is Finlander married to an Italian who works as a taxi driver in Berlin. One night in his taxi come two men with a briefcase full of money. Unluckily for Alex, they are being chased by...', title: 'Helsinki-Naples All Night Long', score: 9.56808090209961 }, { plot: 'The recession hits a couple in Helsinki.', title: 'Drifting Clouds', score: 4.5660295486450195 }, { plot: 'Two teenagers from Helsinki are sent on a mission by their drug dealer.', title: 'Sairaan kaunis maailma', score: 4.041563034057617 }, { plot: 'A murderer tries to leave his criminal past in East Helsinki and make a new life for his family', title: 'Bad Luck Love', score: 3.6251673698425293 } ]
En el siguiente ejemplo, el operador compuesto utiliza el operador de texto para buscar el término Helsinki en los campos plot y title. La query sobre el campo title utiliza score con la opción boost para multiplicar los resultados de puntaje por el campo numérico imdb.rating en path. Si no se encuentra el campo numérico en el path especificado, el operador multiplica la puntuación de los documentos por 3.
1 db.movies.aggregate([ 2 { 3 "$search": { 4 "compound": { 5 "should": [{ 6 "text": { 7 "query": "Helsinki", 8 "path": "plot" 9 } 10 }, 11 { 12 "text": { 13 "query": "Helsinki", 14 "path": "title", 15 "score": { 16 "boost": { 17 "path": "imdb.rating", 18 "undefined": 3 19 } 20 } 21 } 22 }] 23 } 24 } 25 }, 26 { 27 "$limit": 5 28 }, 29 { 30 "$project": { 31 "_id": 0, 32 "title": 1, 33 "plot": 1, 34 "score": { "$meta": "searchScore" } 35 } 36 } 37 ])
Esta query devuelve los siguientes resultados, en los que la puntuación para los documentos donde el campo title coincide con el término de la consulta se multiplica desde su valor base por el valor del campo numérico imdb.rating o 3, si el campo no se encuentra en los documentos:
[ { plot: 'Epic tale about two generations of men in a wealthy Finnish family, spanning from the 1960s all the way through the early 1990s. The father has achieved his position as director of the ...', title: 'Kites Over Helsinki', score: 24.902257919311523 }, { plot: 'Alex is Finlander married to an Italian who works as a taxi driver in Berlin. One night in his taxi come two men with a briefcase full of money. Unluckily for Alex, they are being chased by...', title: 'Helsinki-Naples All Night Long', score: 20.411907196044922 }, { plot: 'The recession hits a couple in Helsinki.', title: 'Drifting Clouds', score: 4.5660295486450195 }, { plot: 'Two teenagers from Helsinki are sent on a mission by their drug dealer.', title: 'Sairaan kaunis maailma', score: 4.041563034057617 }, { plot: 'A murderer tries to leave his criminal past in East Helsinki and make a new life for his family', title: 'Bad Luck Love', score: 3.6251673698425293 } ]
constant
La opción constant reemplaza la puntuación base con un número especificado.
Nota
No debes usar las opciones constant y boost juntas.
Ejemplos
El siguiente ejemplo utiliza el índice por defecto en la colección sample_mflix.movies para query los campos plot y title utilizando el operador compuesto. En la consulta, el operador text utiliza score con la opción constant para reemplazar todos los resultados de puntuación con 5 para los resultados que solo coincidan con el campo title.
1 db.movies.aggregate([ 2 { 3 "$search": { 4 "compound": { 5 "should": [{ 6 "text": { 7 "query": "tower", 8 "path": "plot" 9 } 10 }, 11 { 12 "text": { 13 "query": "tower", 14 "path": "title", 15 "score": { "constant": { "value": 5 } } 16 } 17 }] 18 } 19 } 20 }, 21 { 22 "$limit": 5 23 }, 24 { 25 "$project": { 26 "_id": 0, 27 "title": 1, 28 "plot": 1, 29 "score": { "$meta": "searchScore" } 30 } 31 } 32 ])
La consulta anterior devuelve los siguientes resultados, en los que la puntuación de los documentos que coinciden con la query solo en el campo title se reemplaza con el valor constant especificado:
1 [ 2 { 3 plot: 'Several months after witnessing a murder, residents of Tower Block 31 find themselves being picked off by a sniper, pitting those lucky enough to be alive into a battle for survival.', 4 title: 'Tower Block', 5 score: 8.15460205078125 6 }, 7 { 8 plot: "When a group of hard-working guys find out they've fallen victim to their wealthy employer's Ponzi scheme, they conspire to rob his high-rise residence.", 9 title: 'Tower Heist', 10 score: 5 11 }, 12 { 13 plot: 'Toru Kojima and his friend Koji are young student boys with one thing in common - they both love to date older women. Koji is a playboy with several women, young and older, whereas Toru is a romantic with his heart set on on certain lady.', 14 title: 'Tokyo Tower', 15 score: 5 16 }, 17 { 18 plot: 'A middle-aged mental patient suffering from a split personality travels to Italy where his two personalities set off all kinds of confusing developments.', 19 title: 'The Leaning Tower', 20 score: 5 21 }, 22 { 23 plot: 'A documentary that questions the cost -- and value -- of higher education in the United States.', 24 title: 'Ivory Tower', 25 score: 5 26 } 27 ]
embedded
Nota
Puedes utilizar esta opción solo con el operador embeddedDocument.
La opción embedded te permite configurar cómo:
Agrega los puntajes de varios documentos incrustados coincidentes.
Modifica la puntuación de un documento incrustado operador después de sumar las puntuaciones de los documentos insertados que coincidan.
Campos
La opción embedded toma los siguientes campos:
Campo | Tipo | Necesidad | Descripción |
|---|---|---|---|
| string | Opcional | Configura cómo combinar los puntajes de documentos incrustados coincidentes. El valor debe ser una de las siguientes estrategias de agregación:
Si se omite, este campo se establece por defecto en |
| Opcional | Especifica la modificación de puntuación que se aplicará después de aplicar la estrategia de agregación. |
Ejemplos
La siguiente consulta de ejemplo utiliza un índice llamado default en la colección sample_analytics.transactions. El índice configura un tipo embeddedDocuments en los documentos del arreglo transactions y un tipo string para los campos transactions.symbol y transactions.transaction_code.
Ejemplo
{ "mappings": { "dynamic": true, "fields": { "transactions": { "dynamic": true, "fields": { "symbol": { "type": "string" }, "transaction_code": { "type": "string" } }, "type": "embeddedDocuments" } } } }
La query de muestra en el campo transactions, que contiene un arreglo de documentos, incluye una etapa $limit para limitar la salida a 10 resultados y una etapa $project para:
Exceptuar todos los campos excepto
account_idytransaction_count.Agrega un campo llamado
scoreque aplique una estrategia de agregación y una mayor modificación de la puntuación.Nota
Puede usar
functiondentroscorede la opción del operador embeddedDocument.operatorSin embargo, para las expresiones de puntuación de función que requieren lapathopción, el campo numérico que especifique comopathpara la expresión debe estar dentro de del operadorpathembeddedDocument. Por ejemplo, en la siguiente consulta de ejemplo, el campotransactions.amountque se especifica dentroscorede la opción del operador compuesto en la línea 24 está dentro de laembeddedDocumentruta del operadortransactionsen la 4 línea.
La query busca las cuentas que han comprado AMD y multiplica la mayor compra individual de AMD (por número de acciones) por el valor de log1p del número de transacciones que la cuenta ha realizado en este periodo. Clasifica las cuentas en función de lo siguiente:
Número de
AMDcomprados en una sola transacciónNúmero de transacciones en el último periodo
1 db.transactions.aggregate({ 2 "$search": { 3 "embeddedDocument": { 4 "path": "transactions", 5 "operator": { 6 "compound": { 7 "must": [ 8 { 9 "text": { 10 "path": "transactions.symbol", 11 "query": "amd" 12 } 13 }, 14 { 15 "text": { 16 "path": "transactions.transaction_code", 17 "query": "buy" 18 } 19 } 20 ], 21 "score": { 22 "function": { 23 "path": { 24 "value": "transactions.amount", 25 "undefined": 1.0 26 } 27 } 28 } 29 } 30 }, 31 "score": { 32 "embedded": { 33 "aggregate": "maximum", 34 "outerScore": { 35 "function": { 36 "multiply": [ 37 { 38 "log1p": { 39 "path": { 40 "value": "transaction_count" 41 } 42 } 43 }, 44 { 45 "score": "relevance" 46 } 47 ] 48 } 49 } 50 } 51 } 52 } 53 } 54 }, 55 { "$limit": 10 }, 56 { 57 "$project": { 58 "_id": 0, 59 "account_id": 1, 60 "transaction_count": 1, 61 "score": { $meta: "searchScore" } 62 } 63 })
MongoDB Search califica altamente las cuentas que han realizado muchas transacciones en el último periodo y han comprado muchas AMD en una sola transacción.
1 [ 2 { account_id: 467651, transaction_count: 99, score: 19982 }, 3 { account_id: 271554, transaction_count: 96, score: 19851.822265625 }, 4 { account_id: 71148, transaction_count: 99, score: 19840 }, 5 { account_id: 408143, transaction_count: 100, score: 19836.76953125 }, 6 { account_id: 977774, transaction_count: 98, score: 19822.64453125 }, 7 { account_id: 187107, transaction_count: 96, score: 19754.470703125 }, 8 { account_id: 492843, transaction_count: 97, score: 19744.998046875 }, 9 { account_id: 373169, transaction_count: 93, score: 19553.697265625 }, 10 { account_id: 249078, transaction_count: 89, score: 19436.896484375 }, 11 { account_id: 77690, transaction_count: 90, score: 19418.017578125 } 12 ]
function
La function opción permite modificar la puntuación final del documento mediante un campo numérico. Puede especificar el campo numérico para calcular la puntuación final mediante una expresión. Si el resultado final de la función score es menor 0 que, MongoDB Search reemplaza la puntuación 0 por.
Nota
Puede usar function dentro de la opción score del operador embeddedDocument de operator. Sin embargo, para las expresiones de puntuación por función que requieren la opción path, el campo numérico que especifiques como path para la expresión debe estar dentro del path del operador embeddedDocument.
Expresiones
Utiliza las siguientes expresiones con la opción function para alterar la puntuación final del documento:
Expresiones aritméticas, que suman o multiplican una serie de números.
Expresiones constantes, que permiten un número constante en la puntuación de la función.
Expresiones de decaimiento gaussiano, que decaen o reducen las puntuaciones multiplicando a una tasa especificada.
Expresiones de trayectoria, las cuales incorporan un valor numérico indexado de campo en una valoración de función.
Expresiones de puntuación, que devuelven la puntuación de relevancia asignada por la Búsqueda de MongoDB.
Expresiones unarias, que son expresiones que toman un único argumento. En MongoDB Search, puedes calcular el registro10(x) o registro10(x+1) de un número especificado.
Nota
Las puntuaciones de MongoDB Search función siempre son valores de float y se podría perder precisión para números muy grandes o pequeños.
Una expresión aritmética suma o multiplica una serie de números. Por ejemplo, se puede utilizar una expresión aritmética para modificar el ranking de relevancia a través de un campo numérico proveniente de una pipeline de enriquecimiento de datos. Debe incluir una de las siguientes opciones:
Opción | Tipo | Descripción | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| arreglo de expresiones | Añade una serie de números. Toma un arreglo de expresiones, que pueden tener valores negativos. La longitud del arreglo debe ser mayor o igual a Sintaxis de expresiones aritméticas En el ejemplo anterior, MongoDB Search utiliza las expresiones
| ||||||||||||||||
| arreglo de expresiones | Multiplica una serie de números. Toma un arreglo de expresiones, que pueden tener valores negativos. La longitud del arreglo debe ser mayor o igual que Sintaxis de expresiones aritméticas En el ejemplo anterior, MongoDB Search utiliza las expresiones
|
Nota
No puedes reemplazar una expresión aritmética que evalúa como undefined por un valor constante.
Una expresión constante permite un número constante en la función de puntuación. Por ejemplo, puede usar constant para modificar la clasificación de relevancia mediante un valor numérico de una canalización de enriquecimiento de datos. Debe incluir la siguiente opción:
Opción | Tipo | Descripción |
|---|---|---|
| float | Número que indica un valor fijo. MongoDB Search admite valores negativos. |
Ejemplo
{ "function": { "constant": -23.78 } }
Una expresión de decaimiento gaussiano te permite decaer o reducir, multiplicando, las puntuaciones finales de los documentos en función de la distancia de un valor de campo numérico desde un punto de origen especificado. decay se calcula como:

donde sigma se calcula para asegurar que la puntuación tome el valor decay, a una distancia scale de origin±offset:

Por ejemplo, puedes usar gauss para ajustar el puntaje relevante de los documentos en función de la actualidad del documento, o la influencia de la fecha en un rango superior. gauss toma las siguientes opciones:
Campo | Tipo | Necesidad | Descripción |
|---|---|---|---|
| Double | Opcional | Tasa a la que deseas multiplicar las puntuaciones. El valor debe ser un número positivo entre Para los documentos cuyo valor de campo numérico (especificado mediante |
| Double | Opcional | Número para usar para determinar la distancia desde el origen. La operación de decaimiento se realiza sólo para los documentos cuyas distancias son mayores que |
| Double | Requerido | Punto de origen desde el cual calcular la distancia. |
| Requerido | Nombre del campo numérico cuyo valor desea usar para multiplicar la puntuación base. | |
| Double | Requerido | Distancia desde |
Ejemplo
{ "function": { "gauss": { "path": { "value": "rating", "undefined": 50 }, "origin": 95, "scale": 5, "offset": 5, "decay": 0.5 } } }
Supongamos que la calificación máxima es 100. MongoDB Search utiliza el campo rating en los documentos para decaer la puntuación:
Conserva la puntuación actual para documentos con una calificación entre
90a100.Multiplica la puntuación actual por
0.5para los documentos con una calificación inferior a90.Multiplica la puntuación actual por
0.25para documentos con una puntuación inferior a85, y así sucesivamente.
Una expresión de ruta incorpora un valor de campo numérico indexado en una puntuación de función. Puede ser string o object.
Si string, el valor es el nombre del campo numérico sobre el que se va a buscar para la expresión de ruta.
Ejemplo
{ "function": { "path": "rating" } }
MongoDB Search incorpora el valor numérico del campo rating en la puntuación final del documento.
Si object, la expresión de ruta tiene las siguientes opciones:
Opción | Tipo | Necesidad | Descripción |
|---|---|---|---|
| string | Requerido | Nombre del campo numérico. El campo puede contener valores numéricos negativos. |
| float | Opcional | Valor a utilizar si falta en el documento el campo numérico especificado con |
Ejemplo
{ "function": { "path": {"value": "quantity", "undefined": 2} } }
MongoDB Search incorpora el valor numérico del campo quantity o 2, si el campo quantity no está presente en el documento, en la puntuación final del documento.
Una expresión de ruta no puede ser una array y no puede contener expresión regular ni comodín en el path.
Una expresión de puntuación representa la puntuación de relevancia, que es la puntuación que MongoDB Search asigna a los documentos en función de la relevancia, de la query. Es el mismo que la puntuación actual del documento. Debe incluir la siguiente opción:
Opción | Tipo | Descripción |
|---|---|---|
| string | Valor de la puntuación de relevancia de la query. El valor debe ser |
Ejemplo
{ "function": { "score": "relevance" } }
Una expresión unaria es una expresión que toma un solo argumento. En MongoDB Search, puedes usar expresiones unarias para calcular el registro10(x) o registro10(x+1) de un número especificado. Por ejemplo, puedes utilizar log1p para influir en la puntuación de relevancia mediante la puntuación de popularidad del documento. Debe incluir una de las siguientes opciones:
Opción | Tipo | Descripción | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Calcula el log10 de un número. Por ejemplo: Sintaxis de expresión unaria En el ejemplo anterior, MongoDB Search calcula el registro10 de la expresión aritmética que utiliza la opción Si la expresión especificada para la opción Sintaxis de expresión unaria En el ejemplo anterior, MongoDB Search evalúa el registro10 de la expresión constante | |||||||||||||||||||
| Añade Sintaxis de expresión unaria En el ejemplo anterior, MongoDB Search agrega |
Ejemplos
En los ejemplos siguientes se utiliza el índice por defecto en la colección sample_mflix.movies para consultar el campo title. Las consultas de muestra incluyen una etapa $limit para limitar la salida a 5 resultados y una etapa $project para excluir todos los campos excepto title y score.
Ejemplo
En este ejemplo, el operador de texto utiliza score con la opción function para multiplicar lo siguiente:
Valor numérico de la expresión de ruta, que es el valor del campo
imdb.ratingen los documentos o2, si el campoimdb.ratingno se encuentra en el documentoPuntuación de relevancia, o la puntuación actual del documento
db.movies.aggregate([{ "$search": { "text": { "path": "title", "query": "men", "score": { "function":{ "multiply":[ { "path": { "value": "imdb.rating", "undefined": 2 } }, { "score": "relevance" } ] } } } } }, { $limit: 5 }, { $project: { "_id": 0, "title": 1, "score": { "$meta": "searchScore" } } }])
Esta query devuelve los siguientes resultados, en los que la puntuación es reemplazada por el valor function especificado:
{ "title" : "Men...", "score" : 23.431293487548828 } { "title" : "12 Angry Men", "score" : 22.080968856811523 } { "title" : "X-Men", "score" : 21.34803581237793 } { "title" : "X-Men", "score" : 21.34803581237793 } { "title" : "Matchstick Men", "score" : 21.05954933166504 }
Ejemplo
En el siguiente ejemplo, el operador texto usa score con la opción function para reemplazar la puntuación actual del documento con el valor numérico constante de 3.
db.movies.aggregate([ { "$search": { "text": { "path": "title", "query": "men", "score": { "function":{ "constant": 3 } } } } }, { $limit: 5 }, { $project: { "_id": 0, "title": 1, "score": { "$meta": "searchScore" } } } ])
Esta query devuelve los siguientes resultados, en los que la puntuación es reemplazada por el valor function especificado:
{ "title" : "Men Without Women", "score" : 3 } { "title" : "One Hundred Men and a Girl", "score" : 3 } { "title" : "Of Mice and Men", "score" : 3 } { "title" : "All the King's Men", "score" : 3 } { "title" : "The Men", "score" : 3 }
Ejemplo
En el siguiente ejemplo, el operador texto utiliza score con la opción function para reducir la puntuación de relevancia de los documentos en el resultado.
La query especifica que para los documentos cuyo valor en el campo imdb.rating o 4.6, si el campo imdb.rating no está presente en los documentos, es scale de distancia, lo que es 5, de origin, que es 9.5, más o menos offset, que es 0, MongoDB Search debe multiplicar la puntuación usando decay, que comienza en 0.5. Esta consulta incluye una etapa $limit para limitar la salida a un máximo de 10 resultados y una etapa $project para agregar el campo imdb.rating en los resultados.
db.movies.aggregate([ { "$search": { "text": { "path": "title", "query": "shop", "score": { "function":{ "gauss": { "path": { "value": "imdb.rating", "undefined": 4.6 }, "origin": 9.5, "scale": 5, "offset": 0, "decay": 0.5 } } } } } }, { "$limit": 10 }, { "$project": { "_id": 0, "title": 1, "imdb.rating": 1, "score": { "$meta": "searchScore" } } } ])
Esta query devuelve los siguientes resultados:
[ { title: 'The Shop Around the Corner', imdb: { rating: 8.1 }, score: 0.9471074342727661 }, { title: 'Exit Through the Gift Shop', imdb: { rating: 8.1 }, score: 0.9471074342727661 }, { title: 'The Shop on Main Street', imdb: { rating: 8 }, score: 0.9395227432250977 }, { imdb: { rating: 7.4 }, title: 'Chop Shop', score: 0.8849083781242371 }, { title: 'Little Shop of Horrors', imdb: { rating: 6.9 }, score: 0.8290896415710449 }, { title: 'The Suicide Shop', imdb: { rating: 6.1 }, score: 0.7257778644561768 }, { imdb: { rating: 5.6 }, title: 'A Woman, a Gun and a Noodle Shop', score: 0.6559237241744995 }, { title: 'Beauty Shop', imdb: { rating: 5.4 }, score: 0.6274620294570923 } ]
Para comparar los resultados de las expresiones gausianas utilizadas en la query anterior con la puntuación de relevancia que se retorna en los resultados de MongoDB Search, ejecutar la siguiente query:
db.movies.aggregate([ { "$search": { "text": { "path": "title", "query": "shop" } } }, { "$limit": 10 }, { "$project": { "_id": 0, "title": 1, "imdb.rating": 1, "score": { "$meta": "searchScore" } } } ])
Esta query devuelve los siguientes resultados:
[ { title: 'Beauty Shop', imdb: { rating: 5.4 }, score: 4.111973762512207 }, { imdb: { rating: 7.4 }, title: 'Chop Shop', score: 4.111973762512207 }, { title: 'The Suicide Shop', imdb: { rating: 6.1 }, score: 3.5363259315490723 }, { title: 'Little Shop of Horrors', imdb: { rating: 6.9 }, score: 3.1020588874816895 }, { title: 'The Shop Around the Corner', imdb: { rating: 8.1 }, score: 2.762784481048584 }, { title: 'The Shop on Main Street', imdb: { rating: 8 }, score: 2.762784481048584 }, { title: 'Exit Through the Gift Shop', imdb: { rating: 8.1 }, score: 2.762784481048584 }, { imdb: { rating: 5.6 }, title: 'A Woman, a Gun and a Noodle Shop', score: 2.0802340507507324 } ]
Ejemplo
En el siguiente ejemplo, el operador texto utiliza score con la opción function para sustituir la puntuación de relevancia de la query con el valor del campo numérico imdb.rating o 4.6, si el campo imdb.rating no está presente en los documentos.
db.movies.aggregate([{ "$search": { "text": { "path": "title", "query": "men", "score": { "function":{ "path": { "value": "imdb.rating", "undefined": 4.6 } } } } } }, { $limit: 5 }, { $project: { "_id": 0, "title": 1, "score": { "$meta": "searchScore" } } }])
Esta query devuelve los siguientes resultados, en los que la puntuación es reemplazada por el valor function especificado:
{ "title" : "12 Angry Men", "score" : 8.899999618530273 } { "title" : "The Men Who Built America", "score" : 8.600000381469727 } { "title" : "No Country for Old Men", "score" : 8.100000381469727 } { "title" : "X-Men: Days of Future Past", "score" : 8.100000381469727 } { "title" : "The Best of Men", "score" : 8.100000381469727 }
Ejemplo
En el siguiente ejemplo, el operador text utiliza score con la opción function para devolver la puntuación de relevancia, que es la misma que la puntuación actual, de los documentos.
db.movies.aggregate([{ "$search": { "text": { "path": "title", "query": "men", "score": { "function":{ "score": "relevance" } } } } }, { "$limit": 5 }, { "$project": { "_id": 0, "title": 1, "score": { "$meta": "searchScore" } } }])
Esta query devuelve los siguientes resultados, en los que la puntuación es reemplazada por el valor function especificado:
{ "title" : "Men...", "score" : 3.4457783699035645 } { "title" : "The Men", "score" : 2.8848698139190674 } { "title" : "Simple Men", "score" : 2.8848698139190674 } { "title" : "X-Men", "score" : 2.8848698139190674 } { "title" : "Mystery Men", "score" : 2.8848698139190674 }
Ejemplo
En el siguiente ejemplo, el operador texto utiliza score con la opción function para calcular el registro10 del campo imdb.rating o 10, si el campo imdb.rating no está presente en el documento.
db.movies.aggregate([{ "$search": { "text": { "path": "title", "query": "men", "score": { "function": { "log": { "path": { "value": "imdb.rating", "undefined": 10 } } } } } } }, { "$limit": 5 }, { "$project": { "_id": 0, "title": 1, "score": { "$meta": "searchScore" } } }])
Esta query devuelve los siguientes resultados, en los que la puntuación es reemplazada por el valor function especificado:
{ "title" : "12 Angry Men", "score" : 0.9493899941444397 } { "title" : "The Men Who Built America", "score" : 0.9344984292984009 } { "title" : "No Country for Old Men", "score" : 0.9084849953651428 } { "title" : "X-Men: Days of Future Past", "score" : 0.9084849953651428 } { "title" : "The Best of Men", "score" : 0.9084849953651428 }