django应用程序,带有一些关于postgresql trigram文本比较的插件

djorm-ext-pgtrgm的Python项目详细描述


django pgtrgm是一个django应用程序,带有一些关于postgresql trigram(或trigraph)文本比较的插件。我们可以通过计算两个字符串共享的三元组的数目来衡量它们之间的相似性。
这个简单的想法对于衡量许多自然语言中单词的相似性是非常有效的。

例如,字符串“c at”中的三元组是“c”、“ca”、“cat”和“at”“

有了这个扩展,我们可以在django orm中使用这个特性,使用一个简单的
queryset filter关键字

它是根据[gnu lesser general public
许可证](http://www.gnu.org/licenses/lgpl.html)的条款发布的

postgresql语法
————

`text%text`->;如果boolean参数的相似度大于set_limit设置的当前相似度阈值,则返回true。

[如何在PostgreSQL 9.2(http://www.postgresql.org/docs/9.2/static/pg trgm.html)中安装和使用pg_trgm扩展名


—————————————————————————————————————————————————————————————————————————这可能适用于1.5以下的其他版本。在debian/ubuntu中:`sudo apt get install postgres contrib`



installation
----

-in your`settings.py`

``python


installed嫒apps=(

'djorm嫒pgtrgm',

````

-您需要*在数据库中注册*扩展名。运行`./manage.py dbshell',然后执行:

``sql
create extension pg懔trgm;
`````

-或者,可以在文本列上创建索引,以便快速搜索相似性。例如,supose将在模型“myapp.product”的
“description”字段上过滤大量内容:

``sql



```

usage
----


可以这样做:

``python
mymodel.objects.filter(field戋name戋u similar='whatever')。
extra(select={distance':“similarity(name,'whatever')”})。
order戋by('-distance')
````

为了简洁起见,您可以使用提供的“similarmanager”,它有一个“filter o”方法。


``python



```



`filter\u o`是上面代码片段中“filter+extra+order”的快捷方式。

``python
``mymodel.objects.filter\u o(field\u name\u similar='whatever')
```

这会将每个类似的“mymodel”实例返回一个“field\u name”*类似的*
到“whatever”,并进行排序根据每个Intance的“field_name”值到目标“whatever”的距离。此外,在QuerySet中的每个项中添加一个额外的字段“field\u name\u distance”。





git://github.com/jleivaizq/djorm ext pgtrgm.git



>0.0.1(2013-10-23)
======


*djorm ext pgtrgm的第一个版本

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
DB H2和控制器的java集成测试   程序未通过if语句(Java)   java如何解决JPA更新时数据库中NOTNULL的值   3DES,Java代码结果产生不同于3DES在线工具和oracle数据库脚本的结果   java是否可以在XML中设置SwipeRefreshLayout的颜色方案?   java为什么JRBeanCollectionDataSource使用jr:List组件提供传递List的空字段?   java ScrollView只能托管一个直接子安卓   java是否有更短的代码或更简单的方法将元素添加到不同大小的多个数组中?   java为什么示例作者要硬编码正交摄影机的宽度和高度?(LibGdx僵尸鸟教程)   java不断得到非法的类型错误的开始,我如何才能纠正这一点并继续前进?   java如何获取正在运行的应用程序名称并将其与安卓上数据库中记录的名称进行匹配?   用于Java和if循环代码优化的if语句   if语句如果在JAVA中没有花括号,为什么if块可以放在另一个if块中   安卓操作系统。FileUriExposedException:file:///storage/emulated/0/test.txt通过意图暴露在应用程序之外。getData()   java索引不是错误,而是索引+索引=错误   java Android从改造调用中获取实时数据   java Tictaoe打印电路板   java Guice IoC怎么样?   java JLabel设置为文本列表项   java Hibernate MasterSubDetails映射