【问题标题】:SphinxSe dont return multivalue if queries many index如果查询多个索引,Sphinx 不会返回多个值
【发布时间】:2013-06-22 15:05:24
【问题描述】:

我使用 SPHINXSE 并且我查询了许多索引(就像 Barryhunter 在这里解释的 Joining on Multiple SphinxSE Tables In Single Query

我的问题是

在每个索引中,我都有同名的列。

在我的 sphinxSe 表中,我有像这些属性一样命名的字段。

当我只对一个索引运行查询时,这些字段会被填充,但当我使用多个索引时不会。

我是个问题,因为我会使用 id 来简单地从找到该行的索引中识别。

由于来源可能更好,请在我的 conf 和查询下方找到

在我的 sphinx.conf 中

   source src_article_tv : article_base {
          sql_query_pre = SET NAMES utf8
          sql_query = \
                 SELECT /* sphinx index search article_tv_base */ \
                         concat (id,'40'), \
                         id AS ressource_id, \
                         'article' AS ressource_type, \ (...)
         sql_attr_uint = ressource_id
         sql_attr_string = ressource_type

 (...)



source src_media_tv : media_base
{
        sql_query_pre = SET NAMES utf8
        sql_query = \
                SELECT /* sphinx index search full media */ \
                        concat (o.id,'20'), \
                        o.id AS ressource_id, \
                        'media_tv' AS ressource_type, \
(...)

        sql_attr_uint = ressource_id
        sql_attr_string = ressource_type


delimiter $$
CREATE TABLE `tv_generic` (
    `id` bigint(20) unsigned NOT NULL,
    `weight` int(11) NOT NULL,
    `query` varchar(3072) COLLATE utf8_unicode_ci NOT NULL,
    `ressource_id` bigint(20) unsigned NOT NULL,
    `ressource_type` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
    KEY `query` (`query`(1024))
) ENGINE=SPHINX DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
CONNECTION='sphinx://127.0.0.1:9312/idx_tv'$$

所以 与

SELECT * FROM search.tv_generic where query = 'mons;index=idx_article_tv';

SELECT * FROM search.tv_generic where query = 'mons;index=idx_media_tv';

字段 ressource_id 和 ressource_type 已填充(具有良好的值)

但有

SELECT * FROM search.tv_generic where query = 'mons;index=idx_article_tv,idx_media_tv';

字段 ressource_id 和 ressource_type 为 '0'

【问题讨论】:

  • 您是否尝试在表 CONNECTION='sphinx://127.0.0.1:9312/idx_article_tv,idx_media_tv' 中指定两个索引

标签: search-engine sphinx


【解决方案1】:

我找到了一个“肮脏”的解决方案。

compat_sphinxql_magics = 1 

它的工作。

它仍然很脏,因为

  1. compat_sphinxql_magics = 1 已弃用 http://sphinxsearch.com/forum/view.html?id=9239
  2. 我自己不明白为什么它与 compat_sphinxql_magics = 1 一起工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 2010-09-25
    • 2020-10-23
    • 2020-11-25
    相关资源
    最近更新 更多