狮身人面像搜索

django-sphinxql的Python项目详细描述


[![构建状态](https://travis-ci.org/jorgecarleitao/django-sphinxql.svg?branch=master)(https://travis ci.org/jorgecarleitao/django sphinxql)
[![覆盖状态](https://coveralls.io/repos/jorgecarleitao/django-sphinxql/badge.svg?branch=master&service=github)(https://coveralls.io/github/jorgecarleitao/django-sphinxql?branch=master)

[django](https://www.djangoproject.com)实现了[sphinx搜索](http://sphinx search.com),感谢您的检查。

sphinx是一个为rel设计的搜索引擎。国家数据库。
django sphinxql定义了一个orm,用于在django中使用**sphinx**。
作为推论,它允许您在
django网站中使用sphinx实现全文搜索。

用python配置sphinx。
2.斯芬克斯索引django模型。
3.使用类似django的表达式执行sphinx查询(sphinxql),并将
结果作为django模型。


-python 3
-pymysql
-django(>;=1.8)
-sphinx
-a backend(pymysql或psycopg2)

travis中的构建矩阵有8个构建s:

-python 3.4
-django 1.8和1.10
-sphinx 2.2.10和2.2.11
-mysql和postgres后端

--settings=tests.settings\u test tests

下一节介绍使用此软件包的最小设置。完整的文档
在[此处](http://django sphinxql.readthedocs.org/en/latest/)。


installation
----


django sphinxql除了django和sphinx没有其他要求。要安装sphinx,请使用:


export version=2.2.10
wget http://sphinxsearch.com/files/sphinx-$version release.tar.gz
tar-xf sphinx-$version release.tar.gz
cd sphinx-$version release
./configure--prefix=$home--with pgsql
make
make install

要安装django sphinxql,请使用:



minimal configuration
----

django sphinxql需要一个目录来存储其数据库并注册为
已安装的应用程序(它确实需要不包含django模型):

1。将"sphinxql"添加到"已安装的应用程序"中;
2。将"indexes"添加到设置:

indexes={
"path":os.path.join(base_dir,"_index"),也执行"mkdir _index"。
"sphinx_path":base_dir
}

-``path``是创建sphinx数据库的位置
-`sphinx_path``是direc将包含特定于sphinx的文件的tory。

index您的模型
----

要对其进行索引,请在
应用程序中创建一个文件"index.py",其中:


from sphinxql import index,fields
from my app import models


class documentindex(index.index):
my_summary=fields.text(model_attr='summary')
my_text=fields.text(model_attr='text')
my_number=fields.integer(model_attr='number')


class meta:
model=models.document

`model_attr`可以是带查找的字符串,也可以是[f表达式](https://docs.djangoproject.com/en/1.8/topics/db/querys/using-f-expressions-in-f筛选器)。
例如,`type戋name=fields.text(model戋attr='type戋name')`将索引模型的外键'type'的名称,而

'my戋text',
output_field=charfield())

索引两个字段的连接(另请参阅[django文档](https://docs.djangoproject.com/en/dev/ref/models/database functions/concat))。
原则上,索引字段接受django annotate接受的任何django表达式。

为索引,运行:

python manage.py index_sphinx

hinx

(为了可逆性,要停止sphinx,请使用"python manage.py stop_sphinx``)"

`` searchQuerySet`*仅添加功能*:如果您
不使用Sphinx相关,则它是一个"querySet`"。


Sphinx有一个Django Sphinxql也接受的文本搜索专用语法:

>;>;q=searchQuerySet(文档索引)。search('@my_text toys for babies')

此特定查询返回"文档",仅限于字段"My_Text"中
"Toys for Babyes"匹配的文档,按最相关的匹配顺序排序。
执行此查询后,将执行以下操作:

1。点击sphinx数据库并将结果转换为"documentindex"实例;
2。点击django数据库检索相应的"document"实例;
3。用相应的"documentindex"实例(在"search\u result"属性中)注释"document"实例
4。返回"document"实例。

步骤2。使用`.filter(pk_u in=[…])``完成。结果是按相关性排序的,因为没有对"order by"的特定调用:如果在django查询中设置了任何排序,则它使用django排序(即,它重写默认的排序,而不是显式排序)。有关详细信息,请参阅文档。

d,特别是实时索引。

final note
----


您应该检查[django haystack](http://haystacksearch.org/)是否适合您的需要。

标签:

  • django
  • text
  • 文档
  • https
  • index
  • model
  • my
  • sphinx
  • 狮身人面像
  • sphinxql
  • 欢迎加入QQ群-->: 979659372 Python中文网_新手群

    推荐PyPI第三方库


    热门话题
    javaelk:如何在Kibana中按异常类对stacktrace进行分组   java两个组件使用MigLayout相互重叠   java Hibernate标准获取关联实体的列表,而不是父实体的列表   从Java关闭另一个应用程序,但不是由当前Java应用程序启动   java使用OGNL获取参数   java如何在SSLEngine中启用密码TLS\U DHE\U RSA\U和\U AES\U 256\U GCM\U SHA384   在Java中有效地比较两个列表<Object[]>   java杀死挂起的线程   在java中从指定模式前后的字符串中提取子字符串   存储整数的java HashMap替代方案   java如何使用LibGDX加载特定于语言的资产?   java如何使用JSON响应从维基百科读取结构化数据   java无法连接到Spark Master:原因是:[已解除关联]   java如何配置Elastic beanstalk classic负载平衡器以使用CLI终止HTTPS   java筛网中的奥斯汀大于int   java PircBot在每个用户上迭代一组命令   java将带有Jackson的hashmap编组为XML的错误结构   testng中的java设置testfailure给出了正回报   java如何在IntelliJ中正确配置Eclipse项目?