views:

417

answers:

1

The django-sphinx documentation shows that django-sphinx layer also supports some basic querying over multiple indexes.

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

from djangosphinx.models import SphinxSearch

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

It seems SphinxSearch does not contain the function query(). I also tried to include content_type in sphinx.conf sql_query configuration as mentioned in the django-sphinx documentation. Nothing has worked.

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

Can anybody throw light on how I could get ranked results from multiple indexes in sphinx

+2  A: 

instead of using SphinxSearch, you want to use SphinxQuerySet

for example, if i wanted to query three indexes, weigh the results using the title, tags, and content fields, and set custom matching (SPH_MATCH_EXTENDED2) and ranking (SPH_RANK_NONE) modes:

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
Carson