[英]Confusion on mysql full text search
我在使用MySQL全文时有点困惑。 我的数据库的字符集设置为utf-8
,排序规则设置为utf8_unicode_ci
我有以下搜索产品的流程。 用户从以下流程中选择以搜索任何产品
我的困惑是。
varchar
和text
数据类型字段中受支持。 如何获得相关的结果,如果许多领域用户选择的过滤器是在enum
enum
类型的字段。 编辑例如以更好地理解
此搜索针对的是那些特别知道什么东西但不知道其他东西的人。 就像我需要移动电话一样,但是我什么都不知道,我只是从组合中选择其类型(Wifi /不带wifi),然后选择相机(带/不带),然后选择其他一些功能。 然后,我指定我可以负担的价格范围,然后在特定位置的商店中购买手机。 为此,我输入location A, location B, location C
我想要基于这些位置的结果。 我想根据指定的搜索参数的最接近顺序对结果进行排序。 精确匹配到最接近的匹配,然后是最不匹配的匹配。 希望这可以帮助
有人可以对此有所启发吗?
谢谢
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
索引只能应用于CHAR
, VARCHAR
和TEXT
列类型,因此可能只是一个开始。 您的产品名称可能太短而不必担心FULLTEXT
索引(可以考虑使用HASH索引),但是您的产品描述(如果有)非常适合。
enum
数据最好使用BTREE
索引而不是FULLTEXT
索引。
不确定; 您能否发布一个示例,说明将查询和排序哪些字段及其数据类型,以更好地了解您的需求?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.