我需要创建一个人名搜索。我已经在这里看到了很棒的内容,但我需要一些不同的东西。
这是我的要求。
我尝试使用拼音搜索,但我需要索引的人名不是英文名字。我相信 Apache Solr / Lucene 实现的语音算法对葡萄牙语单词(我的文化)无效。
之后,我决定使用 ngrams 进行搜索。它似乎有效,但我需要以某种方式比较用户键入的内容与 Solr 索引的接近程度。我不能使用分数,因为它使用某个单词在所有文档中存在的次数。所以我需要以某种方式给出一个数字(例如百分比)作为比较的结果,换句话说,用户输入的内容与我在 solr 上的真实姓名有多接近。
Ps:我将在我的应用程序中使用此结果来使用用户键入的内容或继续使用我的 Solr 上存在的内容。
样本:
ID NAME
1 James Bond
2 James Bond Junior
3 Tony Mellord
用户可以搜索 Jhames Bond 并使用 Ngrams 1 和 2 将匹配。
PS:我使用英文名称只是为了澄清场景。
有没有办法给出答案:用户输入的内容与我在不使用分数的情况下索引的内容有多少相似之处?比方说:
Jhames Bond looks like James Bond in 97% (for example)
Jhames Bond looks like James Bond Junior in 87%