2

我需要一种方法来搜索特定表中的 50 多个列,包括 varchar 和 int。我见过人们推荐 Lucene 和 Sphinx,但我不知道如何使用它们,而且 MySQL 的全文不允许我组合超过 16 列或 varchar 和 int 列。

4

2 回答 2

2

如果您的表没有得到很多更新,或者更改反映在搜索中之前的一些时间延迟是可以接受的,也许您可​​以制作一个定期重新生成的派生表,它将所有列组合在 a 中LONGTEXT,并在其上有一个全文索引。

于 2009-08-25T16:25:12.407 回答
0

您可能需要考虑旋转您的桌子并将其切碎一点。获取所有 varchar 列并将数据存储在一个表“Search_Strings”中;对 int 列执行相同的操作:

原表

id
always_field1
always_field2
varstring1
...
varstringx
int1
...
inty

新的 main_table(与原始表的行数相同,但列数很少)

id
always_field1
always_field2 

搜索字符串(

id (FK to main_table)
old_column_name
string_value

Search_Ints

id (FK to main_table)
old_column_name
int_value

使用此设置,您只需要 string_value 上的全文索引。抱歉,由于我对 Sphinx 或 Lucene 不熟悉,因此我无法提出任何建议。

于 2009-08-25T16:26:31.827 回答