每天我有500万个左右的唯一关键字,每个关键字都有一个展示次数。我希望能够通过某些单词来查看这些关键字,例如,如果我有“ipod nano 4GB”,我希望能够在我搜索“ipod”,“nano”或“4GB”时将其拉出来。 mySQL似乎无法为我想要的东西处理那么多数据,我已经尝试过伯克利但是它看起来会因太多行崩溃而且速度较慢。想法?
答案 0 :(得分:2)
我对the Xapian search engine library感到非常满意。虽然听起来对你的场景来说可能有些过分,但也许你只想把你的数据放到一个大的哈希表中,就像memcached一样?
答案 1 :(得分:1)
你可以在mssql上尝试免费文本。 http://msdn.microsoft.com/en-us/library/ms177652.aspx
示例查询:
SELECT TOP 10 * FROM searchtable
INNER JOIN FREETEXTTABLE(searchtable, [SEARCH_TEXT], 'query string') AS KEY_TBL
ON searchtable.SEARCH_ID = KEY_TBL.[KEY]
ORDER BY KEY_TBL.RANK DESC
约什
答案 2 :(得分:1)
Lucene索引可能有效。我之前用它来制作相当大的数据集。它是用java开发的,但也有.NET版本。
答案 3 :(得分:0)
你试过fulltext search in MySQL吗?因为如果你尝试使用LIKE比较,我会明白为什么它很慢:)。
答案 4 :(得分:0)
PostgreSQL的工作负载和搜索模式具有集成的全文搜索功能(从8.4开始集成,现在处于RC状态。此前它是一个贡献模块。)