我在硕士学位期间有一些信息检索的背景知识。现在我想把它用于构建一本用阿拉伯语书写的书的文档搜索应用程序。
我的主要工具是Django以及PostgreSQL或MySQL,具体取决于此处发布的建议。
我在美国用Django开发了5年,但从未需要国际化或任何Unicode支持。所以我的问题是,我该如何处理阿拉伯语单词。
这是我的流程:
1)我有一些.html文件,其中包含阿拉伯语单词。我将构建一个解析器/ tokenizer / stemmer并存储到数据库
2)当用户输入一个搜索词时,我会阻止它,并将其与我的数据库进行比较。
我需要帮助的是以下内容:
1)词干/单词/行应该作为阿拉伯语单词存储在数据库中还是作为python unicode字符串存储
2)如果我将它们存储为阿拉伯语单词,那么更好,PostgreSQL或MySQL以及如何支持阿拉伯语。
3)如果我将它们存储为unicode字符串,那么django admin会将它们显示为阿拉伯语单词。因为如果是这样,那就足够了。此外,管理员可以支持阿拉伯语吗?即如果我想改变数据库中的某些内容,可以通过管理员来完成。
4)如何让Django ORM支持存储解析器将吐出的阿拉伯语单词?
答案 0 :(得分:6)
我在过去的两年里一直使用Django,并且在我的应用程序中不断使用希伯来语文本(无论是在html还是在服务器端)。我发现Django在国际化和使用unicode方面非常出色(比python还要坦白)。
请按照以下几点提示,你可能会没问题:
对于应用中包含外来字符的每个.py文件,请确保在文件顶部添加utf-8 bash:# encoding=utf-8
使用带有阿拉伯字符的字符串时,请务必在字符串前添加一点u。确保始终牢记这一点。无论何时使用字符串:
u'some arabic word' #this will work
u'%s' % word #this will work
'some string' + u'some arabic string' #this will fail
u'some string' + u'some arabic string' #this will work
首次创建数据库时,请确保使用正确的utf-8进行保存(Database Chartset = utf8
和Database Collation = utf8_general_ci
应该证明是正常的。)
确保所有呈现阿拉伯语的网页都在您的html中有这个元标记(最好在base.html文件的head标记内执行,并让所有模板继承它):<meta charset='utf-8'>
通常应该是这样。是的,我知道,通常外国人都很头疼,对吧?不是Django。