1

背景:我已经建立了一个自定义搜索引擎,它在英语中运行良好,但在日语中失败,尽管我的主机服务器确认我已经正确执行了日语 mecab 解析器的安装。我自己的检查显示以下内容:

1)显示创建表

FULLTEXT KEY search_newsletter( letter_title, letter_abstract, letter_body) /*!50100 WITH PARSER mecab*/ ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1

2)显示插件

格拉姆 | 活跃 | 解析器 | 空 | 通用公共许可证 | 出租车 | 活跃 | 解析器 | libpluginmecab.so | GPL

执行

1)MYSQL语句

$sql ="SELECT letter_no, letter_lang, letter_title, letter_abstract, submission_date, revision_date, MATCH (letter_title, letter_abstract, letter_body) AGAINST (? IN NATURAL LANGUAGE MODE) AS letter_score FROM sevengates_letter WHERE MATCH (letter_title, letter_abstract, letter_body) AGAINST (? IN NATURAL LANGUAGE MODE) ORDER BY letter_score DESC";

2)自定义搜索引擎

请参阅https://www.grammarcaptive.com/overview.html下的本地搜索/新闻通讯

3)文件搜索

请参阅https://www.grammarcaptive.com/overview.html下的定期更新/时事通讯/档案/日语

评论:PHP 和 MySQL 都没有抱怨。只是不返回任何需要解析的日语单词搜索。例如,日本语这个词可以被搜索到,但不需要任何解析来检索。在时事通讯中搜索任何其他日语单词都会失败。

请求:任何故障排除提示将不胜感激。

罗迪

4

2 回答 2

0

您可以检查几件事:

Mecab 在命令行上工作吗?

假设一个类似 linux 的系统,你应该能够做这样的事情:

echo "日本語ですよ" | mecab

输出应该大致是这样的(细节可能会有所不同):

日本    名詞,固有名詞,地名,国,*,*,ニッポン,日本,日本,ニッポン,日本,ニッポン,固,*,*,*,*
語      名詞,普通名詞,一般,*,*,*,ゴ,語,語,ゴ,語,ゴ,漢,*,*,*,*
です    助動詞,*,*,*,助動詞-デス,終止形-一般,デス,です,です,デス,です,デス,和,*,*,*,*
よ      助詞,終助詞,*,*,*,*,ヨ,よ,よ,ヨ,よ,ヨ,和,*,*,*,*

在某些平台上,mecab 在 MySQL 中是静态链接的,因此您不需要系统安装,但文档表明情况并非总是如此。

您的编码设置是否正确?

表格的默认字符集是latin1,它不适用于日文文本。我建议使用 utf8,你需要检查你的 mecab 安装是否支持。

希望有帮助。

于 2018-12-11T06:00:37.520 回答
0

It turns out that the entire table must be encoded, not just the columns. Well, at least, this was the one significant difference that I made when I reconstituted the table.

No matter, the parser does not appear in the myPhpAdmin table section where parsers are apparently suppose to appear. This is, perhaps, due to the way the parser appears in the table's SHOW CREATE statement. In any case, this is a small shortcoming when compared with the parser's overall functionality.

Roddy

于 2019-05-18T21:00:40.643 回答