2017-08-18 53 views
0
喜欢

我想我得到了以下要求的不同的结果:SphinxQL要求类似于SQL

SphinxQL:

SELECT ticket_id FROM message WHERE MATCH('*test*') LIMIT 0, 100000 OPTION max_matches = 100000 

结果为221行

SQL:

SELECT * FROM `ticket_logs` WHERE message LIKE '%test%' 

结果为321行

SphinxQL请求应该如何获得与SQL请求(321行)相同的结果。

BTW:斯芬克斯指数的代码是下一个:

source ticket_logs 
{ 
    type   = mysql 
    sql_host  = localhost 
    sql_user  = root 
    sql_pass  = 
    sql_db   = test_db 
    sql_port  = 3306 
    sql_query_pre = SET NAMES utf8 
} 

source messages : ticket_logs 
{ 
    sql_query = \ 
     SELECT id, ticket_id, message FROM ticket_logs 

    sql_field_string = ticket_id 
    sql_field_string = message 
} 

index message 
{ 
    source   = messages 
    path   = c:/sphinx/data/index/message 
} 

searchd 
{ 
    listen   = 9306:mysql41 
    pid_file  = c:/sphinx/data/searchd.pid 
    log    = c:/sphinx/data/log/searchd.log 
    query_log  = c:/sphinx/data/log/query.log 
    binlog_path  = c:/sphinx/data/binlog/ 
} 

回答

1

你不要出现在你的配置定义min_infix_len

http://sphinxsearch.com/docs/current.html#conf-min-infix-len

...你需要它明确地启用'通配符'查询。

这会给你更接近的结果。

+0

非常感谢)我使用了min_infix_len = 1,结果变得更加接近,但仍然不理想。我通过狮身人面像获得了315行,通过MySQL获得了321条。是否有任何选项可以使结果更相似? –

+0

另一个请求的结果是下一个:(sphinxQL)从消息匹配('*长列表*')限制0,300000选项max_matches = 300000消息中选择ticket_id;返回1369行。 (SQL)SELECT * FROM'ticket_logs' WHERE message LIKE'%Long List%';返回了1001个结果。 –

+0

对于第一个评论,它可能类似于整理,mysql可能正在整理查询(例如,所以e匹配或类似)。狮身人面像在默认情况下并不这样做。做一些更多的调查,以找出究竟哪些行是不同的 – barryhunter