gpt4 book ai didi

mysql - 我正在尝试构建一个查询来搜索 mysql 中的全文索引

转载 作者:行者123 更新时间:2023-11-30 23:41:09 25 4
gpt4 key购买 nike

该表的架构非常简单。我有一个存储客户信息(如地址和电话号码)的子表。这些列是 user_id、fieldname、fieldvalue 和 fieldname。所以每一行将包含一个项目,如电话号码、地址或电子邮件。这是为了允许每个客户的每种类型的信息数量不受限制。

当这些客户调用我们的调用中心时,接电话的人员需要快速查找这些客户。我尝试过使用 LIKE%,现在正在使用 FULLTEXT 索引。我的查询有效,但我想让它们更有用,因为如果有人搜索像 805 这样的电话区号,这会带来很多人,然后他们添加名字 Bill 来缩小范围,“805 Bill”。它将显示每个拥有 805 OR Bill 的客户。我希望它在每个客户的多行中执行和搜索。

目前我正在使用下面的查询来获取 user_id,稍后我会执行另一个查询来获取每个用户的所有详细信息以构建他们的完整记录。

SELECT DISTINCT `user_id` FROM `user_details` WHERE MATCH (`fieldvalue`) AGAINST ('805 Bill')

同样,我想对属于单个用户的行组执行上述查询,但这些用户必须匹配搜索关键字。我该怎么办?

最佳答案

您是否尝试过使用 BOOLEAN MODE搜索查询?

SELECT `user_id` FROM `user_details` 
WHERE MATCH (`fieldvalue`) AGAINST ('+805 +Bill' IN BOOLEAN MODE)

这意味着您必须操纵用户输入的搜索查询。您不能将它逐字传递到您的查询中;你必须添加 + 字符等等。


关于您的评论:任何 SQL 谓词一次只在一行的上下文中求值。比较行的方法是使用自连接:

SELECT `user_id` FROM `user_details` u1 JOIN `user_details` u2 USING (`user_id`)
WHERE MATCH (u1.`fieldvalue`) AGAINST ('805 Bill' IN BOOLEAN MODE)
AND MATCH (u2.`fieldvalue`) AGAINST ('805 Bill' IN BOOLEAN MODE)

PS:我删除了 DISTINCT,因为它在此查询中是空操作,只会降低性能。

关于mysql - 我正在尝试构建一个查询来搜索 mysql 中的全文索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2945066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com