Esto está muy fuera de tema para la discusión original, pero no sé si simplemente sorprenderme o quedar escandalizado:
(Énfasis mío)
No voy a discutir las elecciones de bases de datos, ya que no tengo ninguna experiencia en este ámbito, pero esta afirmación implica que PostgreSQL no diferencia internamente entre estos casos. ¿Es este tipo de limitación común entre los motores de búsqueda de texto de las bases de datos? De ser así, eso explicaría en gran medida por qué la mayoría de las herramientas de búsqueda de sitios web son un desastre total…
Permíteme aclarar esta afirmación. Para las coincidencias exactas, no es necesario clasificar los resultados, ya que o hay una coincidencia o no la hay. Para las coincidencias parciales, ¿cómo decidiremos cuáles deben aparecer primero?
Este es mi término de búsqueda
Término de búsqueda es interesante
Término de búsqueda es más interesante aquí, ya que el título es más largo
Todos los títulos anteriores contienen el término de búsqueda, por lo que la pregunta es: ¿cómo clasificamos los resultados? Actualmente, confiamos en la función de clasificación de Postgres para determinar esto por nosotros.
La clasificación intenta medir qué tan relevantes son los documentos para una consulta específica, de modo que cuando haya muchas coincidencias, las más relevantes se muestren primero. PostgreSQL proporciona dos funciones de clasificación predefinidas, que tienen en cuenta información léxica, de proximidad y estructural; es decir, consideran con qué frecuencia aparecen los términos de la consulta en el documento, qué tan cerca están entre sí en el documento y qué tan importante es la parte del documento donde ocurren. Sin embargo, el concepto de relevancia es vago y muy específico de la aplicación. Diferentes aplicaciones podrían requerir información adicional para la clasificación, por ejemplo, la fecha de modificación del documento. Las funciones de clasificación integradas son solo ejemplos. Puedes escribir tus propias funciones de clasificación y/o combinar sus resultados con factores adicionales para adaptarlos a tus necesidades específicas.
Hay una serie de factores que Postgres tiene en cuenta, pero en última instancia, la clasificación sigue siendo algo vaga y realmente depende de sitio a sitio, según cómo esté estructurado el contenido del foro. Nuestro objetivo aquí en Discourse es ofrecer una buena opción predeterminada que funcione para la mayoría de los foros existentes.
Ahh… Bueno, probablemente haya habido algún malentendido de mi parte. Pensé que querías decir que la base de datos no podía distinguir entre una coincidencia exacta y una coincidencia parcial.
En el contexto de priorizar coincidencias en los títulos de los temas, como estábamos discutiendo originalmente:
En realidad, llamaría a los tres de tus ejemplos “coincidencias exactas” con el fin de mi intención.
“Hay un término que puedes buscar” sería una coincidencia “parcial”.
Tus tres ejemplos tienen el mismo rango. Simplemente lístalos en el orden en que se encuentren.
Mi ejemplo tiene un rango inferior al de ellos.
Sin embargo, todos ellos tienen prioridad sobre cualquier publicación que coincida o sea relevante únicamente por el contenido de la publicación sin considerar el título.
Si te preocupa que los primeros resultados de búsqueda se saturen con coincidencias de “Título”, utiliza la búsqueda por título solo cuando el término de búsqueda haya alcanzado un nivel mínimo de complejidad. El objetivo es tener como máximo 4 o 5 coincidencias de “Título” en la parte superior de los resultados de búsqueda. (Aunque veo que probablemente sería difícil determinar eso).