Sphinx(或其他第三方)搜索引擎是否适用于我的情况,还是应该创建自己的搜索引擎?

时间:2009-12-13 11:54:24

标签: php mysql search sphinx

我正在我的网站上创建我的分类广告的搜索功能。 以下是我需要满足的一些标准:

  • 当搜索'bmw 520'时,仅匹配这两个单词恰好以此顺序进入的匹配。不仅仅是'bmw'或仅仅'520'匹配。

  • 当搜索'bmw 330ci'时,会返回上面的结果,但是,WITH WITH WITHOUT ci扩展名。你们都知道(i,ci,si,fi等)汽车中有一些扩展。

  • 我希望'减号''排除'包含符号后面的单词的所有回复,例如:'bmw -330'将返回所有'bmw'结果而不包含'330'结果。 (一个NOT而不是减号也可以)

  • 所有特殊字符重音如“é”都会转换为简单值,在本例中为“e”。

  • 在搜索字符串中完全忽略的单词列表。

我需要Sphinx还是应该在php文件中写这个?

你建议我做什么?

由于

2 个答案:

答案 0 :(得分:4)

我认为Sphinx非常适合你想做的事,但有些事情不会自动发生......

  • 要准确匹配两个单词,您需要使用短语匹配模式,或者在使用扩展匹配模式时将单词分组为双引号。

  • 这是一个棘手的问题 - 除非你指定特定的例外,我认为你不能将330ci索引为'330 ci'和'330ci'。

  • 只要你使用布尔或扩展匹配模式,那么减号就可以按你的意愿工作。

  • '特殊'字符可以转换为标准ASCII,但默认情况下不会发生这种情况。您需要设置your charset_table value。这篇博客文章的目标是Thinking Sphinx(Sphinx的Ruby插件),但设置值直接传递给Sphinx。

  • 如果您在查询中至少有一个其他单词,那么您只能忽略每个查询的特定单词(即:“-foo”对于Sphinx会失败,但是“foo -bar”很好)。值得注意的是,您可以选择to not index specific words

答案 1 :(得分:0)

我认为Sphinx符合您的所有标准。