sphinx中的SetSortMode不使用delta索引(SetSortMode in sphinx not working with delta index)

编程入门 行业动态 更新时间:2024-10-28 17:19:23
sphinx中的SetSortMode不使用delta索引(SetSortMode in sphinx not working with delta index)

所以我的sphinx.conf文件包含类似的东西。 基本上我使用delta索引来快速完成任务。

source main { #... sql_query_pre = SET NAMES utf8 sql_query_pre = REPLACE INTO sph_counter SELECT 1, MAX(id) FROM photo sql_query = \ SELECT p.id AS id, p.search AS search, COUNT(li.id) AS total_likes \ FROM `photo` p \ LEFT JOIN `like` li \ ON p.id = li.photo_id \ WHERE p.id <= ( SELECT max_doc_id FROM sph_counter WHERE counter_id=1 ) \ GROUP BY \ p.id #... sql_query_info = SELECT * FROM photo WHERE id=$id } source delta : main { sql_query_pre = SET NAMES utf8 sql_query = \ SELECT p.id AS id, p.search AS search, COUNT(li.id) AS total_likes \ FROM `photo` p \ LEFT JOIN `like` li \ ON p.id = li.photo_id \ WHERE p.id > ( SELECT max_doc_id FROM sph_counter WHERE counter_id=1 ) \ GROUP BY \ p.id }

而在我检索数据时,我也希望有一些排序方法。

$s->SetSortMode(SPH_SORT_EXTENDED, '@relevance DESC, total_likes DESC, @id DESC'); $result = $s->Query($data['query'], "delta main");

当我只有main索引时,排序工作正常。 但现在当我使用两个索引进行搜索时,delta索引的结果会附加在前面。 我真正想要的是两个索引的结果被提取然后根据偏好排序,即@relevance DESC, total_likes DESC, @id DESC在我的情况下。 这就是total_likes应优先于id

So my sphinx.conf file contains something similar. Basically I am using delta index to make things quick.

source main { #... sql_query_pre = SET NAMES utf8 sql_query_pre = REPLACE INTO sph_counter SELECT 1, MAX(id) FROM photo sql_query = \ SELECT p.id AS id, p.search AS search, COUNT(li.id) AS total_likes \ FROM `photo` p \ LEFT JOIN `like` li \ ON p.id = li.photo_id \ WHERE p.id <= ( SELECT max_doc_id FROM sph_counter WHERE counter_id=1 ) \ GROUP BY \ p.id #... sql_query_info = SELECT * FROM photo WHERE id=$id } source delta : main { sql_query_pre = SET NAMES utf8 sql_query = \ SELECT p.id AS id, p.search AS search, COUNT(li.id) AS total_likes \ FROM `photo` p \ LEFT JOIN `like` li \ ON p.id = li.photo_id \ WHERE p.id > ( SELECT max_doc_id FROM sph_counter WHERE counter_id=1 ) \ GROUP BY \ p.id }

And in the php when I retrieve data I also want to have some sort of sorting methods.

$s->SetSortMode(SPH_SORT_EXTENDED, '@relevance DESC, total_likes DESC, @id DESC'); $result = $s->Query($data['query'], "delta main");

Sorting was working fine when I had only main index. But now when I search with both indexes, results from the delta index is appended at the front. What I actually want is results from both indexes are fetched and then sorted according to preferences i.e. @relevance DESC, total_likes DESC, @id DESC in my case. That is total_likes should be given preference over id

最满意答案

感谢@barryhunter的解决方案 。 解决方案是在delta索引中第二个sql_query_pre必须被覆盖。

sql_query_pre = SET NAMES utf8 sql_query_pre = sql_query = \

Thanks @barryhunter for the solution. The solution was that in the delta index second sql_query_pre had to be overwritten.

sql_query_pre = SET NAMES utf8 sql_query_pre = sql_query = \

更多推荐

本文发布于:2023-08-04 16:28:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1417925.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:索引   SetSortMode   sphinx   delta   index

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!