背景:我已经建立了一个定制的搜索引擎,它在英语中运行良好,但在日语中失败,尽管我的主机服务器确认我已经正确地安装了日语mecab解析器。我自己的支票显示如下:
1) 显示创建表:
全文键 search_newsletter
( letter_title
, letter_abstract
, letter_body
) /*!50100带解析器 mecab
*/)引擎=innodb自动增量=5默认字符集=1
2) 显示插件:
ngram | active | ftparser | null | gpl | mecab | active | ftparser | 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都没有抱怨。任何需要解析的日语单词搜索都不会返回。例如,单词日本語 可以进行搜索和查找,但不需要检索任何解析。在时事通讯中搜索任何其他日语单词都失败。
要求:任何故障排除技巧将不胜感激。
罗迪
2条答案
按热度按时间9bfwbjaz1#
您可以检查以下几点:
mecab在命令行上工作吗?
假设采用类似linux的系统,您应该能够执行以下操作:
输出应该大致如下(细节可能会有所不同):
在某些平台上,mecab在mysql中是静态链接的,因此您不需要安装系统,但文档表明情况并非总是如此。
你的编码设置正确吗?
表的默认字符集是
latin1
,这对日语文本不起作用。我建议使用utf8,您需要检查mecab安装是否支持该功能。希望有帮助。
rryofs0p2#
结果是必须对整个表进行编码,而不仅仅是列。好吧,至少,这是我重组table时所做的一个显著的改变。
不管怎样,解析器不会出现在myphpadmin表部分中,而解析器显然应该出现在该部分中。这可能是由于解析器在表的showcreate语句中的显示方式。无论如何,与解析器的整体功能相比,这是一个小缺点。
罗迪