Configuración requerida
Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →
Esta sección te brinda las mejores prácticas para optimizar nuestro rastreo. Adoptar las siguientes especificaciones es necesario para permitir que nuestro crawler construya la mejor experiencia desde tu sitio web. Deberás actualizar tu sitio y seguir estas reglas.
Si tu sitio web está generado con alguna de nuestras herramientas compatibles, no necesitas realizar cambios ya que cumple con nuestros requisitos.
Ejemplo de configuración genérica
Puedes encontrar la plantilla de configuración predeterminada de DocSearch a continuación y ajustarla con ejemplos de nuestra sección de complex extractors.
Si estás usando alguna de nuestras integraciones, consulta la página de plantillas.
docsearch-default.js
new Crawler({
appId: 'YOUR_APP_ID',
apiKey: 'YOUR_API_KEY',
startUrls: ['https://YOUR_START_URL.io/'],
sitemaps: ['https://YOUR_START_URL.io/sitemap.xml'],
actions: [
{
indexName: 'YOUR_INDEX_NAME',
pathsToMatch: ['https://YOUR_START_URL.io/**'],
recordExtractor: ({ helpers }) => {
return helpers.docsearch({
recordProps: {
lvl0: {
selectors: '',
defaultValue: 'Documentation',
},
lvl1: ['header h1', 'article h1', 'main h1', 'h1', 'head > title'],
lvl2: ['article h2', 'main h2', 'h2'],
lvl3: ['article h3', 'main h3', 'h3'],
lvl4: ['article h4', 'main h4', 'h4'],
lvl5: ['article h5', 'main h5', 'h5'],
lvl6: ['article h6', 'main h6', 'h6'],
content: ['article p, article li', 'main p, main li', 'p, li'],
},
aggregateContent: true,
recordVersion: 'v3',
});
},
},
],
initialIndexSettings: {
YOUR_INDEX_NAME: {
attributesForFaceting: ['type', 'lang'],
attributesToRetrieve: [
'hierarchy',
'content',
'anchor',
'url',
'url_without_anchor',
'type',
],
attributesToHighlight: ['hierarchy', 'content'],
attributesToSnippet: ['content:10'],
camelCaseAttributes: ['hierarchy', 'content'],
searchableAttributes: [
'unordered(hierarchy.lvl0)',
'unordered(hierarchy.lvl1)',
'unordered(hierarchy.lvl2)',
'unordered(hierarchy.lvl3)',
'unordered(hierarchy.lvl4)',
'unordered(hierarchy.lvl5)',
'unordered(hierarchy.lvl6)',
'content',
],
distinct: true,
attributeForDistinct: 'url',
customRanking: [
'desc(weight.pageRank)',
'desc(weight.level)',
'asc(weight.position)',
],
ranking: [
'words',
'filters',
'typo',
'attribute',
'proximity',
'exact',
'custom',
],
highlightPreTag: '<span class="algolia-docsearch-suggestion--highlight">',
highlightPostTag: '</span>',
minWordSizefor1Typo: 3,
minWordSizefor2Typos: 7,
allowTyposOnNumericTokens: false,
minProximity: 1,
ignorePlurals: true,
advancedSyntax: true,
attributeCriteriaComputedByMinProximity: true,
removeWordsIfNoResults: 'allOptional',
separatorsToIndex: '_',
},
},
});
Visión general de un diseño claro
Un sitio web que implemente estas buenas prácticas lucirá simple y completamente claro. Puede tener esta apariencia:
El elemento azul principal será tu contenedor .DocSearch-content. Más detalles en las siguientes pautas.
Usar las clases correctas como recordProps
Puedes añadir clases estáticas específicas para ayudarnos a identificar el rol de tu contenido. Estas clases no deben implicar cambios de estilo. Estas clases dedicadas nos ayudarán a crear una excelente experiencia de aprendizaje mientras escribes en tu documentación.
-
Añade una clase estática
DocSearch-contental contenedor principal de tu contenido textual. Normalmente, esta etiqueta es un elemento HTML<main>o<article>. -
Todo elemento
lvlbuscable fuera de este contenedor principal (por ejemplo en una barra lateral) debe ser un selectorglobal. Serán recogidos globalmente e inyectados en cada registro construido desde tu página. Importante: el valor del nivel es crucial y cada elemento coincidente debe tener un nivel creciente en el flujo HTML. Un nivelX(paralvlX) debe aparecer después de un nivelYcuandoX > Y. -
Los selectores
lvlXdeben usar etiquetas de título estándar comoh1,h2,h3, etc. También puedes usar clases estáticas. Establece un atributoidonameúnico en estos elementos como se detalla a continuación. -
Todo elemento DOM que coincida con los selectores
lvlXdebe tener un atributoidonameúnico. Esto ayudará a que la redirección desplace directamente al lugar exacto de los elementos coincidentes. Estos atributos definen el ancla correcta a usar. -
Todo elemento textual (
contenten recordProps) debe estar envuelto en una etiqueta<p>o<li>. Este contenido debe ser atómico y dividido en entidades pequeñas. Evita anidar elementos coincidentes dentro de otros para prevenir duplicados. -
Mantén consistencia y recuerda que necesitamos uniformidad a lo largo del flujo HTML.
Introducir información global mediante metaetiquetas
Nuestro crawler extrae automáticamente información de las metaetiquetas específicas de DocSearch:
<meta name="docsearch:language" content="en" />
<meta name="docsearch:version" content="1.0.0" />
El rastreo añade el valor content de estas etiquetas meta a todos los registros extraídos de la página. El name de las metaetiquetas debe seguir el patrón docsearch:$NAME. $NAME es el nombre del atributo establecido para todos los registros.
La metaetiqueta docsearch:version puede ser un conjunto de tokens separados por comas, cada uno relevante para la página. Estos tokens deben cumplir con la especificación SemVer o contener solo caracteres alfanuméricos (ej. latest, next, etc.). Como filtros de faceta, estos tokens son insensibles a mayúsculas/minúsculas.
Por ejemplo, todos los registros extraídos de una página con la siguiente metaetiqueta:
<meta name="docsearch:version" content="2.0.0-alpha.62,latest" />
El atributo version de estos registros será:
version:["2.0.0-alpha.62", "latest"]
Puedes entonces transformar estos atributos en facetFilters para filtrarlos desde la interfaz.
Recomendaciones adicionales
-
Tu sitio web debe tener un sitemap actualizado. Esto es clave para que nuestro crawler sepa qué debe actualizarse. No te preocupes, igualmente rastrearemos tu sitio web y descubriremos los hipervínculos incrustados para encontrar tu excelente contenido.
-
Cada página debe tener su contexto completo disponible. El uso de elementos globales puede ayudar (consulta más arriba).
-
Asegúrate de que el contenido de tu documentación también esté disponible sin renderización de JavaScript en el cliente. Si realmente necesitas tener JavaScript activado, debes configurar
renderJavaScript: trueen tu configuración.
¿Tienes preguntas? Conéctate con nosotros en Discord o soporte.