首页 > 解决方案 > 距离参数为 2 的 Apache solr 模糊搜索

问题描述

环境-java版本“11.0.12”2021-07-20 LTS,solr-8.9.0

我在 solr 中加载了一个 csv 文件。csv 文件有一个字段“名称”。solr 中“名称”列的类型定义为“text_general”。

我知道要执行模糊搜索,在单个词的末尾使用波浪号 ~ 符号。距离参数的默认值为 2。

我使用了以下模糊搜索查询

http://localhost:8983/solr/startsolr/select?indent=on&wt=json&q=(Name:'Ellyse~') AND (Name:'Perry~')&sort=field(Name) asc

上面的模糊搜索查询会产生以下名称:“Ellysea Perry”、“Ellys Perry”

但是为什么上面的查询没有给出具有以下名称“Elly Perry”的文档(因为默认距离参数是 2 并且不存在 2 个字符(se)。)

具有 editDistance 为 '2' 的字符串应该在输出中(例如,'Elly Perry')。

我理解“最大编辑距离为 2,我最多可以有 2 次插入、删除或替换。”

Name available in loaded data - 'Elly Perry'
Input query parameter - (Name:'Ellyse~') AND (Name:'Perry~')

因为从名字'Ellyse'中删除2个字符后,它变成了'Elly'。所以它应该导致输出。有人可以帮我找到丢失的部分吗? https://en.wikipedia.org/wiki/Levenshtein_distance

标签: solrjava-11

解决方案


推荐阅读