【问题标题】:mysql - extract specific words from text field using full text searchmysql - 使用全文搜索从文本字段中提取特定单词
【发布时间】:2011-04-19 06:59:57
【问题描述】:

我的问题与Extract specific words from text field in mysql 有点相似,但现在是一样的。

我有一个文本字段,里面有单词。在我的语言中,单词可以有许多不同的结尾。我需要找到这个结局。

我使用 mysql 的全文搜索,但我需要访问索引数据库,在该数据库中,所有字段都被“剪切”为单词并且单词被计算在内。然后我可以搜索“test*”,我可以快速找到“test”、“tested”、“testing”。我需要数据库中存在的所有 endigns 的列表,这是我的主要目标。

事实上,我可以获取其中包含特定“test*”单词的记录,但我不仅需要找到该字段中的出现位置,还需要以某种方式进行分组,以便我获得所有单词的列表,例如从“测试”开始。我不需要它们所在的记录位置,只是一个列表,分组以便“测试”不写 10 次,而只写一次(可能是找到多少次但没有必要的计数器)。

有没有办法从全文搜索字段中提取此信息,或者我应该将所有这些字段分解为单词并制作一个充满单词的索引表,然后只执行“like”word%”并按不同的结果分组?我是不知道如何在实践中做到这一点,但只是为了给我指出正确的方向。

总结一下:我有一个文本字段,我需要找出里面有哪些以“test”开头的单词,比如“tested”、“test”、“testing”等......在英语中是有意义的,但在我的语言中它确实如此,因为我们在不同的尾端有相同的词,而且它们中有很多,有时是 20,我需要找出哪些是那里的,这样我就可以制作一个同义词表;-)

更新:

数据库具有列 ID (int)、成分 (text) 和配方 (text)。

成分中的数据是具有不同结尾的烹饪成分,例如:

1 个鸡蛋 2个鸡蛋

等等

【问题讨论】:

  • 您能否提供一些至少使用的数据库结构或查询的详细信息?

标签: mysql full-text-search word extract


【解决方案1】:

您可以转储索引中存在的所有单词。这也将显示每个单词的频率。例如。 test 用了 200 次, testing 用了 300 次。

手册:http://dev.mysql.com/doc/refman/5.0/en/myisam-ftdump.html

【讨论】:

  • 这似乎是个好主意,但是您能否将此索引表转储到文本文件以外的其他内容,我需要将其作为数据库表,以便我可以在其上搜索单词,并阅读文档我只能找到转储文本:-(
  • 您必须将其转储为文本,然后通过“LOAD DATA INFILE”导入该文本文件:dev.mysql.com/doc/refman/5.1/en/load-data.html
  • 所以我猜如果不使用“命令行”就没有直接的 mysql 方式......谢谢......我看到一些问题,因为我有 UTF8 和我们的特殊字符,并且在导出的文本中我得到了 2-字节字符而不是 č 或 š
  • 这是意料之中的,因为 UTF-8 将使用 2 个字节或更多字节来处理除英语之外的几乎所有字符。在数据库中加载时,这将正常工作。或者,如果您在允许您指定字符集的编辑器中查看它。要加载此数据,请在 LOAD DATA 中指定 utf-8。这是通过“字符集”选项完成的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 2015-04-01
  • 2014-05-10
  • 2017-08-28
  • 1970-01-01
相关资源
最近更新 更多