【发布时间】:2015-09-28 15:55:16
【问题描述】:
这个问题和我之前的问题Accent insensitive search django sqlite有关
正如回复中提到的,没有直接的方法可以这样做。我想出了一个解决方案,但我不确定它是否是一个好的解决方案:
用例:假设数据库有一个表NewsArticles,其中一列是ArticleText。顾名思义,ArticleText 包含新闻文章的文本,其中包括几个带有重音字符的单词。对于主键为aid123 的文章,假设ArticleText 中出现的一个这样的词是Puerto Aisén。现在,用户可以搜索Puerto Aisén 或Puerto Aisen,并且应该能够返回带有PK aid123 的文章,并且找到带有重音符号的粗体字(<b>Puerto Aisén</b>)。
解决方案:我在表normalizedArticleText 中再添加一列,并使其包含unicode.normalize(删除重音)版本的文本。现在每当出现搜索查询时,我首先使用s.decode('ascii') 确定查询是否包含重音字符,然后在相应列中进行相应搜索。
问题:我正在复制整个数据。此外,如果搜索查询是关键字的非重音版本,我无法将重音关键字加粗。
有什么绝妙的建议吗?我正在使用带有 sqlite 的 django
【问题讨论】:
标签: python django sqlite python-2.7