![]() |
1
5
AndyGeers走上了正确的道路:这些数字除了彼此之间的关系之外没有经验意义,也不能单独用来确定什么是“精确匹配”或什么不是“精确匹配”。你需要自己决定。除了全文搜索排名的局限性之外,还有一个悬而未决的问题,即您认为如何考虑“精确匹配”。(仅限实际文本还是Soundex匹配计数?同义词(例如“沙发”和“沙发”)是匹配还是不同?是否应尝试补偿拼写错误?等) 如果我需要执行这样的检查,我将只抓取全文搜索返回的排名最高的条目,删除任何指定的停止字,规范化空白,转换为小写,进行比较,并保留它,直到遇到一个要求进一步细化的情况。不是全部 那个 很多额外的工作——如果您指定了应用程序所使用的语言,您可能会在这附近找到一个人,他可以在十几行代码中编写规范化函数。 |
![]() |
2
8
文本检索系统的基本数据结构是 Inverted Index . 这基本上是文档集合中找到的单词列表,以及它们出现在其中的文档列表。它还可以包含有关每个文档出现次数的元数据,例如单词出现的次数。 包含单词的文档可以通过在搜索词上进行匹配来查询。为了确定相关性,一种被称为 Cosine Ranking 根据点击量计算。这项工作是通过为n个搜索项分别构造一个分量的n维向量。如果需要,还可以加权搜索词。这个向量在N维空间中给出了一个与搜索项相对应的点。 基于每个文档中的加权出现的相似向量可以从倒排索引构造,其中每个轴位于与每个搜索项的轴对应的向量中。如果你计算这些向量的点积,你会得到它们之间夹角的余弦。1.0相当于cos(0),假设向量占据原点的公共线。矢量越接近,角度越小,余弦值越接近1.0。 如果按余弦对搜索结果进行排序(或将它们作为 mg 是的)你得到了最相关的。更聪明的相关算法倾向于调整搜索项的权重,使点积偏向于相关性高的项。 如果你想挖一点, Managing Gigabytes 通过 Bell 和 Moffet 讨论了文本检索系统的内部结构。 |
![]() |
3
2
我不知道您使用的mysql函数的具体内容,但我想可能这些数字没有绝对意义——它们只是设计用来与同一函数产生的其他值进行比较。要检查绝对匹配,可以选择文本本身并手动比较。 |
![]() |
vishnu · Elasticsearch相关性-具有相似名称的文档 7 年前 |