2

我们是一个解剖平台,使用 sphinx 进行搜索。我们想让我们的搜索更加模糊,并开始使用变音位来纠正拼写错误。例如phalanges,即使搜索词是,它也会找到falanges

这很好,但我们想要更多。我们希望用户可以输入,falange甚至falang我们仍然可以找到phalanges. 任何想法如何做到这一点?

如果您有兴趣,可以在此处查看我们的 sphinx 配置文件。

谢谢!

4

1 回答 1

1

好吧,您可以同时在索引上启用metaphone和启用。min_prefix_len它会有点工作。

falange* 

那么可能就可以工作了。(匹配phalanges

问题是“剥离”的字母可能会改变单词的“发音”(因为改变发音)

例如 falange 变为FLNJ,但 falang acully 变为FLNK- 所以它们不再是彼此的“子串”。(即指骨变为FLNJS,不FLNK*匹配)


...老实说,我不知道一个好的解决方案。如果要在变音位之前应用词干提取,您可能会得到更好的结果。(所以改变单词发音的结尾被删除了。

唉,斯芬克斯做不到。如果同时启用词干和变音,则只有一个处理器会触发。


两种可能的解决方案,在 sphinx 之外实现词干提取(或者可能使用 regexp_filter。不确定是否可以纯粹使用正则表达式来实现搬运工词干分析器)

或修改 sphinx,以便应用所有形态处理器。(而不仅仅是第一个改变单词的)

于 2015-02-27T11:07:45.557 回答