gpt4 book ai didi

mysql - 具有多个表的 Sphinxsearch sql_query

转载 作者:行者123 更新时间:2023-11-29 06:55:32 25 4
gpt4 key购买 nike

我正在尝试以一种可以完全索引我的 MySQL 表的方式设置 Sphinxsearch。如果我是对的,所有被索引的东西都必须被 sql_query 获取。每个查询都可以使用,但我对如何将其应用于下表感到困惑。

CREATE TABLE books (
book_id INT(10) PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(200),
abstract TEXT
);

CREATE TABLE authors (
author_id INT(10) PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(200)
);

CREATE TABLE book_author (
book_author_id INT(10) PRIMARY KEY AUTO_INCREMENT,
book_id INT(10),
author_id INT(10)
);

现在我希望能够搜索如下内容:Sphinx searching A. Aksyonoff 并在作者和图书表中进行搜索。但是我应该如何组合这些结果,并获得匹配的作者列表和匹配查询的书籍列表。还是有更好的方法?所以基本上,我必须在 sql_query 中填写什么以及我应该将什么作为属性。

我尝试使用 JOIN,但是当有多个作者时,我就​​迷路了。

最佳答案

单向

sql_query = SELECT book_id, title, abstract, \
GROUP_CONCAT(author_id) AS author_ids, \
GROUP_CONCAT(name SEPERATOR '. ') AS authors \
FROM books \
LEFT JOIN book_author USING (book_id) \
LEFT JOIN authors USING (author_id) \
GROUP BY book_id \
ORDER BY NULL
sql_attr_multi = uint author_ids from query;

这会给你一个索引:

  1. 每本书一个文档 - 标题和摘要完全可搜索。

  2. authors 字段中的作者列表 - 以便文本查询匹配。

  3. 您还有一个 MVA 属性 author_ids,它将为您提供结果中作者的 ID。

    要再次获取名称以用于显示目的,可以对数据库表使用这些 ID(或者如果索引的大小允许使用字符串属性)。

    MVA 还可用于在 sphinx 中进行分组 - 为您提供匹配特定文本查询的作者的分割。

关于mysql - 具有多个表的 Sphinxsearch sql_query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12952796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com