Python/Django和阿拉伯文档搜索应用程序

Sam*_*amy 1 python django unicode information-retrieval arabic

我在硕士学位日的信息检索方面有一些背景知识.现在我想把它用于构建一个用阿拉伯语书写的书的文档搜索应用程序.

我的主要工具是Django和PostgreSQL或MySQL,具体取决于此处发布的建议.

我在美国用Django开发了5年,但从未需要国际化或任何Unicode支持.所以我的问题是,我该如何处理阿拉伯语单词.

这是我的过程:

1)我有一些.html文件,其中包含阿拉伯语单词.我将构建一个解析器/ tokenizer/stemmer并存储到数据库

2)当用户输入一个单词进行搜索时,我会阻止它,并将其与我的数据库进行比较.

我需要帮助的是,如下:

1)词干/单词/行应该作为阿拉伯语单词存储在数据库中还是作为python unicode字符串存储

2)如果我将它们存储为阿拉伯语单词,那么更好,PostgreSQL或MySQL以及如何支持阿拉伯语.

3)如果我将它们存储为unicode字符串,django admin会将它们显示为阿拉伯语单词.因为如果是这样,那就足够了.此外,管理员可以支持阿拉伯语吗?即如果我想改变数据库中的某些内容,可以通过管理员完成.

4)如何让Django ORM支持存储解析器将吐出的阿拉伯语单词?

yuv*_*uvi 7

我在过去的两年里一直使用Django,并且在我的应用程序中不断使用希伯来语文本(无论是在html还是在服务器端).我发现Django在国际化和使用unicode方面非常出色(比python要坦率).

只需按照这几个提示,你可能会没事的:

  1. 对于应用程序中包含外来字符的每个.py文件,请确保在文件顶部添加utf-8 bash: # encoding=utf-8

  2. 当使用带有阿拉伯字符的字符串时,请确保在字符串之前添加一点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
    
    Run Code Online (Sandbox Code Playgroud)
  3. 当您第一次创建数据库时,请确保使用正确的utf-8保存它(Database Chartset = utf8并且Database Collation = utf8_general_ci应该证明是正常的).

  4. 确保所有呈现阿拉伯语的页面都在你的html中有这个元标记(最好在base.html文件的head标签内进行,并使所有模板继承它): <meta charset='utf-8'>

通常应该是它.是的,我知道,通常外国人都很头疼,对吧?不是Django.