クエリで必要な結果が得られない理由を簡単に説明する必要があります。
Sphinx 2.0.8-id64-release (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 ")
またはそれに近い。