This is a viewer only at the moment see the article on how this works.
To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk
This is a preview from the server running through my markdig pipeline
La búsqueda de textos completos (Pt 3 - OpenSearch con ASPM SK3NET Core)
Saturday, 24 August 2024
El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer.
En las partes anteriores de esta serie hemos introducido el concepto de búsqueda de texto completo y cómo se puede usar para buscar texto dentro de una base de datos. En esta parte introduciremos cómo usar OpenSearch con ASPM SK1NET Core.
El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer.
- La búsqueda del texto completo con Postgres
- En la misma sesión, el Consejo aprobó el proyecto de resolución A/C.2/57/L.20 sin someterlo a votación (véase párr.
- El Comité recomienda al Estado Parte que incluya en su próximo informe periódico datos desglosados por sexo, edad y origen étnico.
En esta parte nosotros'cubriremos cómo empezar a usar una nueva instancia de OpenSearch brillante con ASPM SK1NET Core.
El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer.
Una vez que hayamos puesto en marcha y ejecutado la instancia OpenSearch podemos empezar a interactuar con ella. Usaremos el El Comité recomienda que el Estado Parte adopte todas las medidas necesarias para garantizar la protección de los derechos humanos y las libertades fundamentales de todos los trabajadores migratorios y de sus familiares. El Comité recomienda que el Estado Parte adopte todas las medidas necesarias para garantizar la igualdad de oportunidades entre hombres y mujeres en materia de empleo, incluida la adopción de medidas legislativas, administrativas, judiciales y de otra índole. En primer lugar, instalamos el cliente en nuestra extensión de configuración.
var openSearchConfig = services.ConfigurePOCO<OpenSearchConfig>(configuration.GetSection(OpenSearchConfig.Section));
var config = new ConnectionSettings(new Uri(openSearchConfig.Endpoint))
.EnableHttpCompression()
.EnableDebugMode()
.ServerCertificateValidationCallback((sender, certificate, chain, errors) => true)
.BasicAuthentication(openSearchConfig.Username, openSearchConfig.Password);
services.AddSingleton<OpenSearchClient>(c => new OpenSearchClient(config));
Esto configura al cliente con el punto final y los credenciales. También habilitamos el modo de debugging para poder ver lo que se está haciendo'.
El Comité recomienda que el Estado Parte adopte todas las medidas necesarias para garantizar la igualdad de oportunidades entre los hombres y las mujeres en materia de empleo, incluida la asignación de recursos suficientes a la educación y la formación profesional.
El concepto central de OpenSearch es el índice.
Para ello, utilicemos el El Comité recomienda que el Estado Parte adopte todas las medidas necesarias para garantizar la protección de los derechos humanos y las libertades fundamentales de todos los trabajadores migratorios y de sus familiares. para .NETM SK1 Puede instalarlo a través de NuGet:
La primera es la materia de bajo nivel como gestión de conexiones,, la segunda es la de alto nivel como indexación y búsqueda.
Ahora que lo hemos instalado podemos empezar a mirar los datos de indexación.
Crear un índice es semi-directamente hacia delanteM SK1 Simplemente defines como debe parecer su índice y luego lo creas. En el código de abajo usted puede ver nosotros 'map' nuestro modelo de índice (una versión simplificada del blogM SK3modelo de base de datosMSC4 Para cada campo de este modelo definimos entonces qué tipo es (texto , fechaM SK2 palabra clave, etc.
El Tipo es importante, ya que define cómo se almacenan los datos y cómo pueden ser buscados. Por ejemplo, se analiza y se toquena un campo M SK2texto ' un campo , un SSK5 una palabra claveMSC6 no es un campoMNK7 Así que se espera que la búsqueda de un campo de palabras clave sea exacta tal como está almacenadoMST9 pero un campo texto que usted puede buscar partes del textoMstK10
También aquí Categories es realmente una cadena[] pero el tipo de palabras clave entiende cómo manejarlas correctamente.
public async Task CreateIndex(string language)
{
var languageName = language.ConvertCodeToLanguageName();
var indexName = GetBlogIndexName(language);
var response = await client.Indices.CreateAsync(indexName, c => c
.Settings(s => s
.NumberOfShards(1)
.NumberOfReplicas(1)
)
.Map<BlogIndexModel>(m => m
.Properties(p => p
.Text(t => t
.Name(n => n.Title)
.Analyzer(languageName)
)
.Text(t => t
.Name(n => n.Content)
.Analyzer(languageName)
)
.Text(t => t
.Name(n => n.Language)
)
.Date(t => t
.Name(n => n.LastUpdated)
)
.Date(t => t
.Name(n => n.Published)
)
.Date(t => t
.Name(n => n.LastUpdated)
)
.Keyword(t => t
.Name(n => n.Id)
)
.Keyword(t=>t
.Name(n=>n.Slug)
)
.Keyword(t=>t
.Name(n=>n.Hash)
)
.Keyword(t => t
.Name(n => n.Categories)
)
)
)
);
if (!response.IsValid)
{
logger.LogError("Failed to create index {IndexName}: {Error}", indexName, response.DebugInformation);
}
}
Añadidos a los elementos del índice
Una vez que hayamos establecido nuestro índice para agregar elementos a él necesitamos añadir elementos a este índice. Aquí como nosotros'estamos añadiendo una BUNCH usamos un método de inserción en bulkM SK2
Pueden ver que en primer lugar llamamos a un método llamadoGetExistingPosts que devolve todos los puestos que ya están en el índice. Luego agrupamos los puesto por idioma y filtramos el M SK1uk' idioma (porque no queremos indexar que por que necesita un plugin adicional no tenemos todavíaMSC5no tenemos aún). Luego filtramos cualquier puesto que ya está en el indexMNK7
Usamos el hash y el id para identificar si un puesto ya está en el index.
public async Task AddPostsToIndex(IEnumerable<BlogIndexModel> posts)
{
var existingPosts = await GetExistingPosts();
var langPosts = posts.GroupBy(p => p.Language);
langPosts=langPosts.Where(p => p.Key!="uk");
langPosts = langPosts.Where(p =>
p.Any(post => !existingPosts.Any(existing => existing.Id == post.Id && existing.Hash == post.Hash)));
foreach (var blogIndexModels in langPosts)
{
var language = blogIndexModels.Key;
var indexName = GetBlogIndexName(language);
if(!await IndexExists(language))
{
await CreateIndex(language);
}
var bulkRequest = new BulkRequest(indexName)
{
Operations = new BulkOperationsCollection<IBulkOperation>(blogIndexModels.ToList()
.Select(p => new BulkIndexOperation<BlogIndexModel>(p))
.ToList()),
Refresh = Refresh.True,
ErrorTrace = true,
RequestConfiguration = new RequestConfiguration
{
MaxRetries = 3
}
};
var bulkResponse = await client.BulkAsync(bulkRequest);
if (!bulkResponse.IsValid)
{
logger.LogError("Failed to add posts to index {IndexName}: {Error}", indexName, bulkResponse.DebugInformation);
}
}
}
Una vez que “'” hayamos filtrado los puestos existentes y nuestro analizador perdido, creamos un nuevo índice ( basado en el nombre , en mi caso
El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer. BulkRequest En el párrafo 2 de la resolución, la Asamblea General pidió al Secretario General que le presentara en su quincuagésimo séptimo período de sesiones un informe sobre los progresos realizados en la aplicación del Programa de Acción para prevenir, combatir y eliminar el tráfico ilícito de armas pequeñas y ligeras en todos sus aspectos. Refresh El Comité recomienda que el Estado Parte adopte todas las medidas necesarias para garantizar la igualdad de oportunidades entre los hombres y las mujeres en materia de empleo, incluida la eliminación del trabajo forzoso. true. Esto significa que después de haber completado la inserción en bulk el índice se actualizaM SK1 Esto no es' REALmente necesario pero es ' útil para la debuggingMSC4
El Comité recomienda que el Estado Parte adopte todas las medidas necesarias para garantizar la igualdad de oportunidades entre los hombres y las mujeres en materia de empleo, incluida la adopción de medidas legislativas, administrativas, judiciales y de otra índole.
Una buena manera de comprobar qué 's realmente se ha creado aquí es entrar en las herramientas Dev en los paneles de OpenSearch y ejecutar una consulta de búsqueda
GET /mostlylucid-blog-*
{}
Esta consulta nos devolverá todos los índices que coincidan con el patrón mostlylucid-blog-*En el párrafo 2 de la resolución, la Asamblea General pidió al Secretario General que le presentara en su quincuagésimo séptimo período de sesiones un informe sobre los progresos realizados en la aplicación del Programa de Acción para prevenir, combatir y eliminar el tráfico ilícito de armas pequeñas y ligeras en todos sus aspectos.
{
"mostlylucid-blog-ar": {
"aliases": {},
"mappings": {
"properties": {
"categories": {
"type": "keyword"
},
"content": {
"type": "text",
"analyzer": "arabic"
},
"hash": {
"type": "keyword"
},
"id": {
"type": "keyword"
},
"language": {
"type": "text"
},
"lastUpdated": {
"type": "date"
},
"published": {
"type": "date"
},
"slug": {
"type": "keyword"
},
"title": {
"type": "text",
"analyzer": "arabic"
}
}
},
"settings": {
"index": {
"replication": {
"type": "DOCUMENT"
..MANY MORE
Las herramientas Dev en los paneles de OpenSearch es una gran manera de probar tus consultas antes de ponerlas en tu código.

El Comité recomienda que el Estado Parte adopte todas las medidas necesarias para garantizar la igualdad de oportunidades entre los hombres y las mujeres en materia de empleo, incluida la adopción de medidas legislativas, administrativas, judiciales y de otra índole.
Ahora podemos empezar a buscar el índice. Podemos usar Search method sobre el cliente para hacer esto.
Esto es donde el verdadero poder de OpenSearch viene en. Es literalmente De conformidad con lo dispuesto en el párrafo 2 del artículo 5 de la Convención, los Estados Partes deben adoptar todas las medidas apropiadas para garantizar que se cumplan plenamente las obligaciones que les incumben en virtud del presente Protocolo. puede usarse para buscar sus datos. Todo desde una búsqueda simple con palabras clave hasta una búsqueda compleja.
public async Task<List<BlogIndexModel>> GetSearchResults(string language, string query, int page = 1, int pageSize = 10)
{
var indexName = GetBlogIndexName(language);
var searchResponse = await client.SearchAsync<BlogIndexModel>(s => s
.Index(indexName) // Match index pattern
.Query(q => q
.Bool(b => b
.Must(m => m
.MultiMatch(mm => mm
.Query(query)
.Fields(f => f
.Field(p => p.Title, boost: 2.0)
.Field(p => p.Categories, boost: 1.5)
.Field(p => p.Content)
)
.Type(TextQueryType.BestFields)
.Fuzziness(Fuzziness.Auto)
)
)
)
)
.Skip((page -1) * pageSize) // Skip the first n results (adjust as needed)
.Size(pageSize) // Limit the number of results (adjust as needed)
);
if(!searchResponse.IsValid)
{
logger.LogError("Failed to search index {IndexName}: {Error}", indexName, searchResponse.DebugInformation);
return new List<BlogIndexModel>();
}
return searchResponse.Documents.ToList();
}
El Comité recomienda que el Estado Parte adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer.
El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer. GetSearchResults, está diseñado para hacer una consulta de un índice específico OpenSearch para extraer post de blog. Es necesario tres parámetrosM SK2 language, queryEl Comité recomienda que el Estado Parte adopte todas las medidas necesarias para garantizar la igualdad de oportunidades entre hombres y mujeres en materia de empleo, incluida la adopción de disposiciones legislativas, administrativas y de otra índole que prohíban la discriminación racial. page El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer. pageSize. Aquí ' es lo que hace:
El Comité recomienda al Estado Parte que incluya en su próximo informe periódico datos desglosados por sexo, edad y origen étnico.:
- El sistema retrieve el nombre del índice utilizando el
GetBlogIndexNamemethod based on the language provided. El índice se selecciona de forma dinámica según el idioma.
- El sistema retrieve el nombre del índice utilizando el
El Comité recomienda que el Estado Parte adopte todas las medidas necesarias para garantizar la igualdad entre los géneros, en particular mediante la adopción de medidas legislativas, administrativas y de otra índole.:
- El Comité recomienda al Estado Parte que incluya en su próximo informe periódico datos estadísticos desglosados por sexo, edad y origen étnico.
BoolEl Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer.MustEl Comité recomienda que el Estado Parte adopte todas las medidas necesarias para garantizar la igualdad de oportunidades entre hombres y mujeres en materia de empleo, incluida la eliminación del trabajo forzoso. - Por consiguiente, el Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad de oportunidades entre los hombres y las mujeres en materia de empleo.
MustEl Comité recomienda que el Estado Parte adopte todas las medidas necesarias para garantizar la igualdad de oportunidades entre hombres y mujeres en materia de empleo, incluida la adopción de medidas legislativas, administrativas, judiciales y de otra índole.MultiMatchse utiliza para buscar entre múltiples campos (Title,CategoriesEl Comité recomienda que el Estado Parte adopte todas las medidas necesarias para garantizar la igualdad de oportunidades entre los hombres y las mujeres en materia de empleo, incluida la eliminación del trabajo forzoso.Content).- **El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer.**El Comité recomienda que el Estado Parte adopte todas las medidas necesarias para garantizar la igualdad de oportunidades entre hombres y mujeres en materia de empleo, incluida la eliminación del trabajo forzoso.
TitleEn el párrafo 2 de la parte dispositiva del proyecto de resolución, la Asamblea General pidió al Secretario General que le presentara en su quincuagésimo séptimo período de sesiones un informe sobre los progresos realizados en la aplicación de las recomendaciones formuladas por la Comisión Consultiva en Asuntos Administrativos y de Presupuesto.2.0, que lo hace más importante en la búsqueda, yCategoriesEl Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer.1.5En el párrafo 2 de la parte dispositiva del proyecto de resolución, la Asamblea General pidió al Secretario General que le presentara en su quincuagésimo noveno período de sesiones un informe sobre los progresos realizados en la aplicación de las recomendaciones formuladas por la Comisión Consultiva en Asuntos Administrativos y de Presupuesto. - **El Comité recomienda que el Estado Parte adopte todas las medidas necesarias para garantizar la igualdad entre los géneros en todos los niveles de la enseñanza, incluida la educación primaria y secundaria.**El Comité recomienda al Estado Parte que incluya en su próximo informe periódico datos estadísticos desglosados por sexo, edad y origen étnico.
BestFields, que intenta encontrar el mejor campo de paridad para la consultaM SK1 - **El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer.**El Comité recomienda que el Estado Parte adopte todas las medidas necesarias para garantizar la igualdad de oportunidades entre hombres y mujeres en materia de empleo, incluida la eliminación del trabajo forzoso.
Fuzziness.Autoel parámetro permite una aproximación de los parámenes (e.gM SK2 manipular typos menoresMSC3
- **El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer.**El Comité recomienda que el Estado Parte adopte todas las medidas necesarias para garantizar la igualdad de oportunidades entre hombres y mujeres en materia de empleo, incluida la eliminación del trabajo forzoso.
- El Comité recomienda al Estado Parte que incluya en su próximo informe periódico datos estadísticos desglosados por sexo, edad y origen étnico.
El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer.:
- El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer.
SkipLa metodología supera el primernLos resultados dependen del número de página, calculado como(page - 1) * pageSize. Esto ayuda a navegar por los resultados de las paginas. - El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer.
SizeLa metodología limita el número de documentos que se devolven al especificadopageSize.
- El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer.
En la misma sesión, el Consejo aprobó el proyecto de resolución A/C.2/57/L.20 sin someterlo a votación (véase párr.:
- Si la consulta falla, se registra un error y se devolve una lista vacía.
El Comité recomienda al Estado Parte que incluya en su próximo informe periódico datos estadísticos desglosados por sexo, edad y origen étnico.:
- La metodología devolve una lista de
BlogIndexModelDocumentos compatibles con los criterios de búsqueda.
- La metodología devolve una lista de
Así que usted puede ver que podemos ser super flexibles en cuanto a cómo buscamos nuestros datos. Podemos buscar campos específicos, podemos impulsar determinados camposM SK2 incluso podemos buscar por múltiples índicesMSC3
Una ventaja BIG es la facilidad qith que podemos apoyar múltiples idiomas. Tenemos un índice diferente para cada idioma y habilitamos la búsqueda dentro de ese índiceM SK1 Esto significa que podemos usar el analizador correcto para cada lengua y obtener los mejores resultados.
El nuevo API de búsqueda
En contraste con la API de búsqueda que vimos en las partes anteriores de esta serie, podemos simplificar enormemente el proceso de búsqueda usando OpenSearch. simplemente podemos lanzar un texto a esta consulta y obtener grandes resultados de vueltaM SK2
[HttpGet]
[Route("osearch/{query}")]
[ValidateAntiForgeryToken]
public async Task<JsonHttpResult<List<SearchResults>>> OpenSearch(string query, string language = MarkdownBaseService.EnglishLanguage)
{
var results = await indexService.GetSearchResults(language, query);
var host = Request.Host.Value;
var output = results.Select(x => new SearchResults(x.Title.Trim(), x.Slug, @Url.ActionLink("Show", "Blog", new{ x.Slug}, protocol:"https", host:host) )).ToList();
return TypedResults.Json(output);
}
Como usted puede ver, tenemos todos los datos que necesitamos en el índice para devolver los resultados. Podemos entonces usarlo para generar una URL al post de blogM SK1 Esto elimina la carga de nuestra base de datos y hace que el proceso de búsqueda sea mucho más rápido.
El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer.
En este post vimos cómo escribir un cliente C# para interactuar con nuestra instancia OpenSearch.