gpt4 book ai didi

sphinx - 非整数主键需要 sphinx 配置

转载 作者:行者123 更新时间:2023-12-01 04:08:39 24 4
gpt4 key购买 nike

我要创建 sphinx搜索以下表结构:

CREATE TABLE IF NOT EXISTS `books` (
`productID` varchar(20) NOT NULL,
`productName` varchar(256) NOT NULL,
`ISBN` varchar(20) NOT NULL,
`author` varchar(256) DEFAULT NULL,
`productPrice` float(10,2) NOT NULL,
`discount` float(10,2) NOT NULL,
`brandID` int(11) NOT NULL,
`qty` int(11) NOT NULL,
`status` tinyint(1) NOT NULL,
PRIMARY KEY (`productID`),
KEY `status` (`status`),
KEY `ISBN` (`ISBN`),
KEY `author` (`author`),
KEY `brandID` (`brandID`),
KEY `books_index` (`productName`)
) ENGINE=innodb DEFAULT CHARSET=latin1;

我无法更改 productID上表中的列..

我有 author 的依赖表和 Brands
CREATE TABLE IF NOT EXISTS `authors` (
`authorID` ini(11) NOT NULL,
`author_name` varchar(256) NOT NULL
PRIMARY KEY (`authorID`)
) ENGINE=innodb DEFAULT CHARSET=latin1;


CREATE TABLE IF NOT EXISTS `brands` (
`brandID` ini(11) NOT NULL,
`brandName` varchar(256) NOT NULL
PRIMARY KEY (`brandID`)
) ENGINE=innodb DEFAULT CHARSET=latin1;

请有人提供 sphinx的配置搜索。

我正在使用以下配置。
source src1
{
type = mysql


sql_query = SELECT CRC32(productID) as productid,productID,productName,ISBN,brandID,author FROM sapna_ecom_products

sql_attr_uint = productID
sql_field_string = ISBN
sql_field_string = productName
sql_field_string = brandID
sql_attr_multi = uint brandID from field; SELECT brandID,brandName FROM sapna_ecom_brands
sql_attr_multi = uint author from field; SELECT authorID,author_name FROM sapna_ecom_authors

sql_query_info = SELECT productID,productName,ISBN,brandID,author FROM sapna_ecom_products WHERE CRC32(productID)=$id
}

如果我通过 productName 搜索,我会得到结果但不适用于 authorbrand
我的目标是在用户通过 productName 搜索任何内容时获得结果或 authorbrand
请有人为我提供合适的配置..

谢谢..

最佳答案

一种方法是只生成一个整数键

sql_query = SELECT CRC32(productID) AS id,...

因为您现在无法将其与真实的 productID 关联起来,所以您可以将 prodctID 存储在一个属性中,以便在查询结果中取回它。

您可能会与 CRC32 发生冲突,

要检查的快速查询
CREATE TABLE test (id INT UNSIGNED NOT NULL PRIMARY KEY) SELECT CRC32(productID) FROM books;

如果这有效,你很高兴去,

如果没有,将不得不使用更好的散列。也可以看看

http://greenash.net.au/thoughts/2010/03/generating-unique-integer-ids-from-strings-in-mysql/

或者
sql_query_pre = SET @id := 1;
sql_query = SELECT @id := @id + 1 AS id,...

关于sphinx - 非整数主键需要 sphinx 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7686332/

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