¿La función de búsqueda devuelve resultados aproximados?

Hola.

Estaba buscando este tema en mi foro: les passants - Autour d'une roue - Monocycle.info

El título del tema es “les passants”

Antes, buscar con “passants in:title” devolvía este tema entre los primeros resultados.

Pero ahora, muestra resultados aproximados:

En lugar de “passants”, verás “passe”, “pass”, “passage”, “passion”, algunas de estas palabras incluso antes de la cadena exacta “passants”…

¿Supongo que es un error?

Me temo que no sé lo suficiente sobre la Búsqueda como para saber si eso es intencional o no, pero puedes poner comillas dobles alrededor de una palabra para que sea una búsqueda exacta si eso ayuda.

Por ejemplo: "passants"

1 me gusta

Eso ciertamente ayuda, pero el comportamiento predeterminado es desconcertante.

Por alguna razón desconocida, al buscar la cadena exacta entre comillas dobles, también devuelve un resultado que no tiene “passants” en el título (pero sí en el contenido de la primera publicación):

1 me gusta

En francés, passants se reduce al lema pass antes de buscar en el contenido de las publicaciones.

Un lema es una cadena, al igual que un token, pero ha sido normalizado para que diferentes formas de la misma palabra se vuelvan iguales.

4 Me gusta

Entiendo.

¿Los lemas están relacionados con el idioma?

No creo que tenga mucho sentido en francés reducir una palabra así a “pass”. :thinking: Esto es más confuso que útil, considerando que hay muchas palabras que empiezan con “pass” sin estar (directa o indirectamente) relacionadas con el verbo “passer”.

Pero si podemos apuntar a la cadena exacta con comillas dobles en su lugar, eso servirá :slight_smile:.

Además, ¿qué pasa con el segundo resultado que no tiene “passants” en el título a pesar de usar las comillas dobles en mi última captura de pantalla?

Estas cosas son configurables en Postgres, pero la implementación francesa en Postgres es lo que reduce todo esto:

discourse_development=# select to_tsvector('french', 'passants');
 to_tsvector
-------------
 'pass':1
(1 row)

discourse_development=# select to_tsvector('english', 'passants');
 to_tsvector
-------------
 'passant':1
(1 row)

Existen diccionarios más sofisticados que se pueden usar, pero son extremadamente complicados de configurar.

3 Me gusta