0

目前,我正在尝试构建一个类似于 http://www.indeed.com/jobs?q=sales&l=的搜索引擎 (我最担心的是左侧的搜索过滤器是 group-by-s不同参数的搜索结果)。

目前我们使用的数据库是 MySQL。我做了一些初步研究,人们一直告诉我我的问题是由于没有正确使用 mysql 索引而引起的。我花了几个月的时间对 mysql 索引、缓存等进行深入研究,结果却发现根本没有办法用 mysql 提供的东西来解决这个问题。B-tree 是个好东西,但它有其局限性,无法设置允许同时在多个列上进行所有类型搜索(全文、范围等)的索引类型(然后也最后多次分组)。

经过更多的谷歌搜索和交谈,我发现了一个名为 Sphinx 的东西,据称它能够解决这些类型的任务。但是,我似乎找不到一本好书或研究来解释和说明 Sphinx 究竟是如何实现这一点的。如果您能向我解释这是如何工作的,或者至少为我指明一本好书的方向,那就太棒了!基本上我想了解 Sphinx 背后的技术,以 100% 确定它可以解决我面临的问题。

谢谢!

4

1 回答 1

1

最基本的,Sphinx 实现了一个倒排索引http://en.wikipedia.org/wiki/Inverted_index

这适用于全文搜索。顺便说一句,Mysql 的“全文”索引也使用倒排索引。

Sphinx 通常比 mysql 更适合搜索 - 因为它是为任务设计的工具,而不是“螺栓固定”。它有更多的配置选项。Sphinx 在性能方面也有很大的优势,并且不遗余力地实现它。例如,属性保存在内存中,用于快速索引查找。

它还具有诸如“多查询”之类的功能,该功能使用了许多优化,可以在同一数据集上运行多个查询——这对于构建这些类型的接口非常有用。

...所以狮身人面像的设置会更加复杂,但最终结果希望会让它值得付出努力!

我不知道任何解释狮身人面像的好处的文件。“高性能mysql”中有一个章节可能值得一读,但没有涉及“如何”狮身人面像的工作原理。

还有一些演讲,例如 http://www.slideshare.net/freelancing_god/sphinx-beyond-the-basics 更多:https://www.google.co.uk/search?q=sphinx+talk他们可能是了解狮身人面像的力量的好方法。

还有这个真正的技术文档: http ://sphinxsearch.googlecode.com/svn/trunk/doc/internals-index-format.txt

(顺便说一下——“左边的东西”被称为刻面。Sphinx 的刻面效果很好。使用技术术语可能有助于您的研究。但 sphinx 本身通常称它们为“分组依据”或聚类)

于 2012-04-23T13:44:55.517 回答