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

Python/Django和一个阿拉伯语文档搜索应用程序,python,django,unicode,arabic,information-retrieval,Python,Django,Unicode,Arabic,Information Retrieval,我在攻读硕士学位时就有一些信息检索方面的背景。现在我想将其用于构建一个文档搜索应用程序,该应用程序用于一本用阿拉伯语编写的书 我的主要工具是Django和PostgreSQL或MySQL,具体取决于此处发布的建议 我在美国使用Django开发了5年,但从未需要国际化或任何Unicode支持。所以我的问题是,我如何处理阿拉伯语单词 以下是我的流程: 1) 我有几个.html文件,其中的有几行阿拉伯单词。我将构建一个解析器/标记器/词干分析器并存储到数据库中 2) 当用户输入一个单词进行搜索时,我将

我在攻读硕士学位时就有一些信息检索方面的背景。现在我想将其用于构建一个文档搜索应用程序,该应用程序用于一本用阿拉伯语编写的书

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

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

以下是我的流程:

1) 我有几个.html文件,其中的有几行阿拉伯单词。我将构建一个解析器/标记器/词干分析器并存储到数据库中

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

我需要以下方面的帮助:

1) 词干/单词/行应该以阿拉伯语或python unicode字符串的形式存储在数据库中吗

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

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


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

我与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
    数据库排序规则=utf8\u general\u ci
    应该可以)

  • 确保所有呈现阿拉伯语的页面在html中都有此meta标记(最好在base.html文件的head标记中进行此操作,并使所有模板都继承它):


  • 通常应该是这样。是的,我知道,通常外国角色都让人头疼,对吧?不是Django。

    我在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
    数据库排序规则=utf8\u general\u ci
    应该可以)

  • 确保所有呈现阿拉伯语的页面在html中都有此meta标记(最好在base.html文件的head标记中进行此操作,并使所有模板都继承它):

  • 通常应该是这样。是的,我知道,通常外国角色都让人头疼,对吧?对Django没有