我们是一个解剖平台,并使用sphinx进行搜索。我们希望让我们的搜索更加模糊,并开始使用metaphone来纠正拼写错误。即使搜索词为phalanges
,它也会找到falanges
。
这很好,但我们想要更多。我们希望用户可以输入falange
甚至falang
,我们仍然可以找到phalanges
。任何想法如何实现这一目标?
如果您有兴趣,可以查看我们的sphinx配置文件here。
谢谢!
答案 0 :(得分:1)
您可以立即在索引上同时启用metaphone
和min_prefix_len
。这将是一种工作。
falange*
然后可能会起作用。 (匹配phalanges
)
问题在于剥离了#39;字母可能会改变声音'这个词(因为改变了发音)
例如falange变为FLNJ
,但falang变得FLNK
- 所以他们不再是' substrings'彼此(即指骨变为FLNJS
,FLNK*
不匹配)
...说实话我不知道一个好的解决方案。你可能会得到更好的结果,如果是应用词干,BEFORE metaphone。 (因此删除了改变单词发音的结尾。
唉,狮身人面像无法做到这一点。如果同时启用词干和变音符,则只会触发一个处理器。
两种可能的解决方案,在sphinx之外实现词干(或者使用regexp_filter。不确定是否可以使用正则表达式实现porter词干提取器)
或修改sphinx,以便适用所有形态处理器。 (而不仅仅是改变这个词的第一个)