我使用MySQL全文很少混淆。我的数据库的字符集设置为utf-8
,排序规则设置为utf8_unicode_ci
我有以下搜索产品的流程。用户从下面的流程中选择搜索任何产品
我的困惑是。
varchar
和text
数据类型字段仅支持全文。如果用户选择过滤的许多字段位于enum
enum
的字段。修改 为了更好地理解例如
此搜索适用于那些知道应该购买但不知道其他任何内容的人。就像我需要一个移动电话,但我不知道其他什么,我只是从组合中选择它的类型(Wifi /没有wifi),然后选择相机(有/没有),然后选择其他几个这样的功能。然后我指定我能负担的价格范围,然后我想在特定地点的商店提供电话。为此,我输入location A, location B, location C
。我想要基于这些位置的结果。我想根据指定的搜索参数的最近匹配来订购结果。与最接近的匹配完全匹配,然后是最不匹配的匹配。希望这有帮助
有人可以对此有所了解吗?
由于
答案 0 :(得分:3)
Full-Text Search Functions
页面上的文档
声明FULLTEXT
只能与MyISAM一起使用,然而,MySQL 5.6添加了对InnoDB的FULLTEXT
索引的支持(请参阅InnoDB Table and Index
Section 14.2.4.12.3
}页面)。如果你的表被设置为MyISAM,那么是 - 你应该得到支持;使用InnoDB,可能 - 等待你的MySQL版本。
要启用全文搜索,您应添加FULLTEXT
索引
只在您要使用搜索的字段上(没有点
将它添加到你不会的字段中。 FULLTEXT
索引只能是。{1}}索引
已应用于CHAR
,VARCHAR
和TEXT
列类型,因此可以
是一个开始。您的产品名称可能太短而无法担心
FULLTEXT
索引(可能考虑使用HASH索引),但是你的
产品说明(如果你有的话)会非常有用。
enum
数据可以使用BTREE
索引进行索引,而不是FULLTEXT
之一。
不确定;你可以发布一个查询哪些字段的例子 并订购和他们的数据类型,以提供更好的图像 你需要吗?
答案 1 :(得分:2)