0

我想从我下载的语料库中制作一个语言学习工具。我想要实现的是,用户将输入一个他想在其中查看它的用法的单词,然后 php 查询输出将列出包含关键字的单词。这对语言学习者很有启发意义。sentencessentences

为此,我想将所有文本导入 mysql 数据库,然后使用PHP访问它。我确实做到了,但它没有效果,sentences没有正确填充并且查询时间太长。quote.list 的格式如下文所示。

# "Andromeda" (2000) {Pitiless as the Sun (#2.4)}
Tyr Anasazi: Am I mistaken
  strangers unlimited access to this ship?
Captain Dylan Hunt: Why yes
  closely and see what they do with it. There's something not quite
  trust worthy about them
Tyr Anasazi: You occassion bouts of deviousness never fail to
  surprise me



# "Andromeda" (2000) {Point of the Spear (#3.16)}
Tyr Anasazi: Well even crippled I would much prefer to assume the
  offensive than instruct the crew to make peace with their various
  and sundry dieties!

如何将散列之间的文本导入mysql 表中的每一行?你会发布任何其他可以简化我的项目的想法吗?

编辑:我使用 perl 句子分段脚本“sentence-boundary.pl”将文本对齐到句子中,现在我想不出创建表格并将“对齐文本”加载到表格中的最佳方法。我尝试了一些事情,例如:

  CREATE TABLE text
 (

        body TEXT

 )ENGINE = MYISAM

当我使用加载“对齐文本”

 LOAD DATA LOCAL INFILE '/home/user/Desktop/quotes' INTO TABLE text;

并使用查询,

 SELECT * FROM `text` WHERE MATCH(body) AGAINST('freedom' IN BOOLEAN MODE)

查询时间大约需要两分钟。

我在下面尝试过indexed table,但无法将文本加载到其中,body 字段充满NULL

 CREATE TABLE IF NOT EXISTS text  (  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,          `body` VARCHAR(140) NOT NULL,  PRIMARY KEY (`id`)  ) ENGINE=MyISAM AUTO_INCREMENT=5000000 DEFAULT CHARSET=utf8;

编辑2

我设法将文本加载到正文字段中,但查询时间仍然太长。

  LOAD DATA LOCAL INFILE '/home/user/Desktop/quotes' INTO TABLE text (body);

你能帮我吗?

4

1 回答 1

0

虽然我的问题的主要思想有点离题,但我最后在报价表上做了一个工作超快速的句子列表器 mysql 查询。完成上述步骤后,我将全文模式应用于表格:

ALTER TABLE text ADD FULLTEXT(body);

请注意,它必须在填充表后应用,否则导入时间会变长。

我在本地主机中编写了一个 php 文件,我用它来访问数据库并列出搜索到的句子,列出大约 2500 个句子需要不到 2 秒的时间。

于 2013-10-31T12:45:58.950 回答