gpt4 book ai didi

mysql - 如何为自动完成功能选择 MySQL 全文索引条目?

转载 作者:可可西里 更新时间:2023-11-01 08:38:22 25 4
gpt4 key购买 nike

有没有办法从 MySQL 的全文索引中选择条目?

最佳答案

不,据我所知不是。不过,这将是一个很棒的功能。

我在 MySQL 之上构建了一个具有自动完成功能的搜索界面。我运行一项日常工作,扫描我要搜索的所有表中的所有列,使用正则表达式提取单词,然后将这些单词存储在单独的表中。我还有一个多对多表,一列保存对象的id,一列保存单词的id,以记录“单词是属于对象的文本的一部分”这一事实。

自动完成的工作原理是将输入的单词输入框中,然后生成如下查询:

SELECT     obj.title
FROM obj_word
INNER JOIN obj
ON obj_word.obj_id = obj.id
INNER JOIN word
ON obj_word.word_id = word.id
WHERE word.word IN ('word1', 'word2', 'word3') -- generated dynamically, word1 etc are typed by the user
GROUP BY obj.id
HAVING COUNT(DISTINCT word.id) = 3 -- the 3 is generated, because user typed 3 words.

这对我来说效果很好,但我没有大量数据要处理。

(实际实现稍微花哨一点,因为最后一个词用 LIKE 匹配以允许部分匹配)

编辑:

我刚刚了解到 myisam_ft_dump 实用程序可用于从索引文件中提取单词列表。命令行是这样的:

myisam_ftdump -d film_text 1  > D:\tmp\out.txt

这里,-d表示转储(获取所有条目的列表),film_text是一个带有全文索引的MyISAM表名,1 是一个,并按序号标识要转储的索引。

我必须说,该实用程序有效,但我不确定它是否足够快以使用它来拉取实时列表以进行自动完成。您当然可以有一个运行命令并将其转储到文件的定期作业。不幸的是,这会转储索引条目,而不是单独的、唯一的单词。

我的直觉是您可以使用此实用程序作为提取单词的方法,但需要对其进行处理才能将其转换为适当的自动完成列表。

关于mysql - 如何为自动完成功能选择 MySQL 全文索引条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2013282/

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