2009-11-20 2 views
1

Документация django-sphinx показывает, что слой django-sphinx также поддерживает некоторые базовые запросы по нескольким индексам.Запрос нескольких индексов в django-sphinx

http://github.com/dcramer/django-sphinx/blob/master/README.rst

from djangosphinx.models import SphinxSearch 

SphinxSearch('index1 index2 index3').query('hello') 

кажется SphinxSearch не содержит функцию запроса(). Я также попытался включить content_type в конфигурацию sql_query в sphinx.conf, как указано в документации django-sphinx. Ничего не сработало.

Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
AttributeError: 'SphinxSearch' object has no attribute 'query' 

Кто-нибудь может пролить свет на том, как я мог бы получить ранжированных результаты из нескольких индексов в сфинкса

ответ

6

вместо использования SphinxSearch, вы хотите использовать SphinxQuerySet

, например, если я хотел бы запросить три индексы, взвешивать результаты, используя поля title, tags и content, а также установить индивидуальные соответствия (SPH_MATCH_EXTENDED2) и рейтинги (SPH_RANK_NONE):

from djangosphinx.models import SphinxQuerySet 

search = SphinxQuerySet(
    index = "index_1 index_2 index_n", 
    weights = { 
     'title': 100, 
     'tags': 80, 
     'content': 20 
    }, 
    mode = 'SPH_MATCH_EXTENDED2', 
    rankmode = 'SPH_RANK_NONE') 

results = search.query('what is the answer to life, the universe, and everything?') 

for result in results: 
    print result 
+3

ответ 42;) – nabizan