Mysql 斯芬克斯和一对多协会
我所看到的sphinx搜索示例并没有真正使用连接。如果我有这样一个模式(一本书有多篇评论) 我应该向sphinx提出什么样的查询,这样我就可以搜索评论中的单词,它将返回相应的书籍。如果我使用常规的内部连接,每个评论都将是一个单独的文档,与网站上的可见内容不一致(单个页面包含书籍信息和所有评论) 你有什么建议?我是否应该为搜索文档创建一个非规范化的表,并使用呈现的页面作为输入,例如:Mysql 斯芬克斯和一对多协会,mysql,search,sphinx,Mysql,Search,Sphinx,我所看到的sphinx搜索示例并没有真正使用连接。如果我有这样一个模式(一本书有多篇评论) 我应该向sphinx提出什么样的查询,这样我就可以搜索评论中的单词,它将返回相应的书籍。如果我使用常规的内部连接,每个评论都将是一个单独的文档,与网站上的可见内容不一致(单个页面包含书籍信息和所有评论) 你有什么建议?我是否应该为搜索文档创建一个非规范化的表,并使用呈现的页面作为输入,例如: create table sphinx_input ( id int, -- corresponds 1.
create table sphinx_input (
id int, -- corresponds 1..1 to book.id
contents longtext -- everything on the page
);
对于书籍和评论的每一次更改都要修改它?您可以允许它像往常一样索引评论,然后在结果返回后在mysql中执行从评论ID到书籍ID的连接。您可以只允许它像往常一样索引评论,然后在结果返回后在mysql中执行从评论ID到书籍ID的连接返回。您需要使用,将所有数据收集到Sphinx的sql\u查询中的单个结果中以供审阅。也许是这样的:
SELECT books.id, books.title, books.summary,
GROUP_CONCAT(reviews.review SEPARATOR ' ') AS reviews
FROM books LEFT OUTER JOIN reviews ON reviews.book_id = books.id
WHERE books.id >= $start AND books.id <= $end
GROUP BY books.id, books.title, books.summary
选择books.id、books.title、books.summary、,
组_CONCAT(reviews.review分隔符“”)作为审阅
从书本左侧外部连接评论上的评论。book_id=books.id
其中books.id>=$start和books.id用于将所有数据收集到Sphinx的sql_查询中的单个结果中,以供审阅。也许是这样的:
SELECT books.id, books.title, books.summary,
GROUP_CONCAT(reviews.review SEPARATOR ' ') AS reviews
FROM books LEFT OUTER JOIN reviews ON reviews.book_id = books.id
WHERE books.id >= $start AND books.id <= $end
GROUP BY books.id, books.title, books.summary
选择books.id、books.title、books.summary、,
组_CONCAT(reviews.review分隔符“”)作为审阅
从书本左侧外部连接评论上的评论。book_id=books.id
WHERE books.id>=$start和books.id谢谢!我为rails安装了Thinking Sphinx插件,以了解它是如何实现的,事实上,它是通过GROUP_CONCAT实现的。我写了这个,这就是为什么上面的建议是相同的;)谢谢我为rails安装了Thinking Sphinx插件,以了解它是如何实现的,事实上,它是通过GROUP_CONCAT实现的。我写了这个,这就是为什么上面的建议是相同的;)