我们是一个解剖平台,使用 sphinx 进行搜索。我们想让我们的搜索更加模糊,并开始使用变音位来纠正拼写错误。例如phalanges
,即使搜索词是,它也会找到falanges
。
这很好,但我们想要更多。我们希望用户可以输入,falange
甚至falang
我们仍然可以找到phalanges
. 任何想法如何做到这一点?
如果您有兴趣,可以在此处查看我们的 sphinx 配置文件。
谢谢!
我们是一个解剖平台,使用 sphinx 进行搜索。我们想让我们的搜索更加模糊,并开始使用变音位来纠正拼写错误。例如phalanges
,即使搜索词是,它也会找到falanges
。
这很好,但我们想要更多。我们希望用户可以输入,falange
甚至falang
我们仍然可以找到phalanges
. 任何想法如何做到这一点?
如果您有兴趣,可以在此处查看我们的 sphinx 配置文件。
谢谢!
好吧,您可以同时在索引上启用metaphone
和启用。min_prefix_len
它会有点工作。
falange*
那么可能就可以工作了。(匹配phalanges
)
问题是“剥离”的字母可能会改变单词的“发音”(因为改变发音)
例如 falange 变为FLNJ
,但 falang acully 变为FLNK
- 所以它们不再是彼此的“子串”。(即指骨变为FLNJS
,不FLNK*
匹配)
...老实说,我不知道一个好的解决方案。如果要在变音位之前应用词干提取,您可能会得到更好的结果。(所以改变单词发音的结尾被删除了。
唉,斯芬克斯做不到。如果同时启用词干和变音,则只有一个处理器会触发。
两种可能的解决方案,在 sphinx 之外实现词干提取(或者可能使用 regexp_filter。不确定是否可以纯粹使用正则表达式来实现搬运工词干分析器)
或修改 sphinx,以便应用所有形态处理器。(而不仅仅是第一个改变单词的)