搜索功能返回近似结果?

您好。

我一直在我的论坛上搜索这个主题:les passants - Autour d'une roue - Monocycle.info

该主题的标题是“les passants”。

以前,使用“passants in:title”搜索会将此主题显示在最前面的结果中。

但现在,它显示的是近似结果:

您会看到“passe”、“pass”、“passage”、“passion”等词,甚至在精确字符串“passants”之前……

我猜这是一个错误?

恐怕我不知道关于搜索的足够信息,无法判断这是否是故意的,但您可以在单词周围加上双引号以进行精确搜索,如果这有帮助的话?

例如 "passants"

1 个赞

这确实有帮助,但默认行为令人费解。

出于未知原因,当搜索带双引号的确切字符串时,它还会返回一个标题中没有“passants”的结果(但第一个帖子内容中有):

1 个赞

在法语中,passants 在我们搜索帖子内容之前会被简化为 pass 词元。

词元(lexeme)是一个字符串,就像标记(token)一样,但它经过了规范化处理,使得相同单词的不同形式变得一致。

4 个赞

我明白了。

这些词素与语言有关吗?

我觉得在法语中将这样一个词简化为“pass”没有多大意义。:thinking: 考虑到有很多词以“pass”开头,但与动词“passer”没有(直接或间接)关系,这比帮助更令人困惑。

但如果我们能用双引号精确地定位字符串,那就可以了 :slight_smile:

另外,为什么我上次截图中使用双引号的第二个结果标题中没有“passants”?

这些东西可以在 Postgres 中进行配置,但 Postgres 中的法语实现是导致这种情况的原因:

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)

还有更高级的词典可以使用,但它们的配置极其复杂。

3 个赞