Sphinx中的拼写纠正?

7
我正打算将基于Sphinx的搜索集成到网站中,但我发现它没有拼写纠正的内置支持。网络上的人们建议使用pspell或其他第三方库来完成这项工作,但问题是我要搜索的数据主要包含像品牌名称这样的“技术”术语,因此我不认为常用库会包含它们。
另一方面,Xapian声称具有基于索引数据的拼写纠正支持,正好符合我的需求。值得使用Xapian吗?我仍然很困惑应该使用哪个全文搜索引擎:Sphinx似乎很不错,但缺少Xapian(或者Lucene?)的一些酷炫功能,而后者看起来社区较小,文档也较少。
我认为我可以使用自定义字典来解决pspell字典中不存在的单词的问题,但我不确定是否会带来明显的性能损失?我将在一个相当流行的网站上使用搜索系统进行聚光灯搜索(通过ajax在输入每个字母时进行单独的搜索),因此性能很重要。
理想情况下,我希望使像品牌名称这样的字段比普通字典更具优先级,但我想那并不重要,因为大多数品牌名称与其他单词非常不同。
欢迎就自定义全文搜索引擎的一般设计提出任何建议。
谢谢

你有没有考虑切换到Apache Solr?它是建立在Lucene之上的搜索平台:http://lucene.apache.org/solr/features.html#Detailed+Features - nuqqsa
2个回答

6
Sphinx没有内置的拼写纠正功能,但是可以使用Sphinx来实现。只有一篇关于这个主题的how-to文章(由Sphinx作者撰写)可以在这里找到:http://habrahabr.ru/blogs/sphinx/61807(俄语,您可以使用GoogleTranslate阅读此文章。查看名为“Я понял, это намек”的文章第二部分)。我最近实施了该方法-效果完美!

谷歌的俄语比我的好多了,但对于技术指导目的来说仍然几乎没有用处。 - Brad Mace
@bemace,请查看源代码压缩包中的misc/suggest目录。它会给你一个基本的工作原理。 - user187291
耶!我的建议功能实现是基于sphinx tarball中misc/suggest文件夹的内容。@stereofrog谢谢! - seriyPS

1

Sphinx 允许您使用形态预处理器和单词形式词典。这两者结合起来可以使您更接近您想要实现的目标。您可以在此处阅读更多有关这两个主题的信息:http://sphinxsearch.com/docs/manual-0.9.8.html#conf-morphology 以及更下方的内容。

有几种“风格” 的形态预处理器可选,选择最适合您需要的那一个即可。文档还提到了 Snowball 项目,如果需要,它可以用于添加其他语言的词干,而不仅仅是内置英语和俄语。该项目网站: http://snowball.tartarus.org/

Sphinx 是非常快速的全文搜索引擎,使用词干分析器不太可能将其减慢到您开始注意到的程度。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接