Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 斯芬克斯和一对多协会_Mysql_Search_Sphinx - Fatal编程技术网

Mysql 斯芬克斯和一对多协会

Mysql 斯芬克斯和一对多协会,mysql,search,sphinx,Mysql,Search,Sphinx,我所看到的sphinx搜索示例并没有真正使用连接。如果我有这样一个模式(一本书有多篇评论) 我应该向sphinx提出什么样的查询,这样我就可以搜索评论中的单词,它将返回相应的书籍。如果我使用常规的内部连接,每个评论都将是一个单独的文档,与网站上的可见内容不一致(单个页面包含书籍信息和所有评论) 你有什么建议?我是否应该为搜索文档创建一个非规范化的表,并使用呈现的页面作为输入,例如: create table sphinx_input ( id int, -- corresponds 1.

我所看到的sphinx搜索示例并没有真正使用连接。如果我有这样一个模式(一本书有多篇评论)

我应该向sphinx提出什么样的查询,这样我就可以搜索评论中的单词,它将返回相应的书籍。如果我使用常规的内部连接,每个评论都将是一个单独的文档,与网站上的可见内容不一致(单个页面包含书籍信息和所有评论)

你有什么建议?我是否应该为搜索文档创建一个非规范化的表,并使用呈现的页面作为输入,例如:

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实现的。我写了这个,这就是为什么上面的建议是相同的;)