Reputation: 2291
I have a postgres install with Sphinx and when I run query I want that most relevant records to be selected first. In other words, I want the following query first:
query="word1 & word2 & word3"
and then, if nothing selected,
query="word1 | word2 | word3"
How to configure sphinx for that needs? Sphinx config is default
Upvotes: 0
Views: 204
Reputation: 21091
Well https://github.com/andy128k/pg-sphinx says
sphinx_select(
/*index*/ varchar,
/*query*/ varchar,
/*condition*/ varchar,
/*order*/ varchar,
/*offset*/ int,
/*limit*/ int,
/*options*/ varchar)
And from http://sphinxsearch.com/docs/current.html#sphinxql-select you want a OPTIONS clause to change the ranking (a ranker
option)
http://sphinxsearch.com/docs/current.html#weighting
So would try
sphinx_select(...., "word1 | word2 | word3", ..., "ranker=wordcount")
(edited to show the query in place too, need the OR query for this to work! see comments above)
(wordcount ranker, is very basic, but should do the exact criteria you want)
But can play with custom expressions, not great, but get you started...
sphinx_select(...., "ranker=expr('sum(word_count+hit_count+lccs+exact_order)+bm25')")
MUCH more detail... http://sphinxsearch.com/blog/2010/08/17/how-sphinx-relevance-ranking-works/
Upvotes: 1