2017-08-18 66 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