2011-07-25 46 views
3

我需要一个轻量级的快速搜索解决方案。需要全文搜索替代方案的建议

今天我在布尔模式下使用Fulltext,其中每个searchword在结果中是强制性的。

该功能快速,工作,并符合要求。

但是一些全文限制http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html似乎是一个问题。该站点位于托管服务器上,并且我不允许更改mysql设置(例如,最小长度)

例如, 搜索必须能够找到red11ab.cd哪些今天全文解决方案不能。

回答

0

想到的唯一事情就是将您的搜索建立在可以找到的出现次数的基础上。实际的索引方法可能会有所不同,具体取决于数据库提供的内容

假设数据库大小不是问题,一个(非常)基本的方法是将每个单词中的搜索blob(例如,stackoverflow上的一个帖子)分解为每个单词,对其进行规范化(删除复数,删除'逻辑'等单词as等),然后将每个单词作为新记录插入,并附上标识索引资源的ID。

统计ID的实例,按次数排序,更高的数字=更相关。

虽然不完全是我的领域,所以仔细考虑! =]

+0

所以基本上从头构建一个自己的搜索功能逻辑?唷:) – Joseph

0

我建议你试试距离搜索:Levenshtein

或搜索 “的N-gram全文索引”。

0

我还没有讨论过它,但我读了全文搜索的理论(至少与mysql有关)。

如果内存正确地为我提供服务,您可以使用全文搜索来获得您想要的内容,但是您需要配置(并且我认为重新编译)才能使其在较少数量的搜索字符上工作。我认为它被设置为4个字符的默认数量。您需要将其更改为2个字符长度,并添加其他一些选项并测试您获得的结果。

有人纠正我,如果这是不正确的。我宁愿不把他扔在红鲱鱼身上。

1

使用Lucene,它经常与MySQL一起实现,并且它会更快更有效。

使用内置的FTS引擎是相对糟糕的做法,尤其是因为它不适用于更可靠的InnoDB引擎。