내 쿼리가 내가 필요한 결과를 가져 오지 못하는 이유에 대한 간단한 설명이 필요합니다. 여기첫 번째 문자로 스핑크스 일치
스핑크스 2.0.8-id64 릴리스 (r3831) 내가 sphinx.conf에있는 것입니다 :
SELECT
trackid,
title,
artistname,
SUBSTRING(REPLACE(TRIM(`artist_name`), 'the ', ''),1,3) AS artistname_init
....
sql_field_string = title
sql_field_string = artistname
sql_field_string = artistname_init
추가 설정 :
이docinfo = extern
charset_type = utf-8
min_prefix_len = 1
enable_star = 1
expand_keywords= 0
charset_table = U+FF10..U+FF19->0..9, 0..9, U+FF41..U+FF5A->a..z, U+FF21..U+FF3A->a..z, A..Z->a..z, a..z
쿼리가 작동합니다. 내 데이터에 문제없이 색인을 생성합니다. 그러나 나는 스핑크스가 현명한 결과를 가져 오지 못하게하고 있습니다. 쿼리에 SphinxQL을 사용하고 있습니다.
예 :
select
artistname, artistname_init from myindex
WHERE MATCH('@artistname_init ^t*')
GROUP BY artistname ORDER BY artistname_init ASC limit 0,10;
쿼리에 관련된 아무것도 제공하지 않습니다. 나는 내가 좋아하는 생각할 수있는 모든 것을 시도했다 :
MATCH('@artistname_init ^t*')
MATCH('@artistname_init[1] t')
MATCH('@artistname_init ^t$')
사람이 내 실수입니다 포인트 아마 나에게 내 경우에 작동 쿼리를 적어주세요 수 있습니까?
B (Single letter)
B-T (Single letter + non-alphabet sign after)
B as Blue (Single letter + space after)
Baccara (First letter of single word)
Bad Religion (First letter of several words)
The B (not counting "The ")
The B.Y.Z (Single letter + non-alphabet sign after not counting "The ")
The B 2 B (Single letter + space after not counting "The ")
The Boyzz (First letter of single word not counting "The ")
The Blue Boy (First letter of several words not counting "The ")
아니면 가까운 : 내 목표는이 정렬 순서를 따라야 결과를 얻을 수 있습니다.
데이터베이스에'artistname' 컬럼과'artist_name' 컬럼이 실제로 있습니까? 아마도 그들은 서로 다른 정보를 포함하고 있을까요? 또한 min_prefix_len, min_infix_len, min_word_len, enable_star 및 dict 설정은 무엇입니까? – barryhunter
소스 쿼리는 실제로 여러 개의 조인이며 실제로 크다. 나는이 사건에 대해 단순화 시켰고 필드 이름을 간과했다.주의해야 할 2 개의 필드는 아티스트 이름 및 artistname_init이며, 나머지는 내 사례와 관련이 없습니다. artistname에는 아티스트 이름이 있고 init 필드에는 "The"를 제거한 후 이름의 처음 3자를 포함합니다. 나는 요청 된 정보로 질문을 갱신 할 것이다. – Zhi