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