もちろん、回避するのは簡単です。 Sphinx専用に独自のIDを作成する必要があり、それらを衝突させたくない場合は、sphinx.conf(MySQLのサンプルコード)でこのようなことを行うことができます
source products {
# Use a variable to store a throwaway ID value
sql_query_pre = SELECT @id := 0
# Keep incrementing the throwaway ID.
# "code" is present twice because Sphinx does not full-text index attributes
sql_query = SELECT @id := @id + 1, code AS code_attr, code, description FROM products
# Return the code so that your app will know which records were matched
# this will only work in Sphinx 0.9.10 and higher!
sql_attr_string = code_attr
}
唯一の問題は、検索で一致したレコードを知る方法がまだ必要なことです。 Sphinxは、ID(現在は意味がありません)に加えて、「属性」としてマークした列を返します。
Sphinx 0.9.10以降では、文字列属性がサポートされているため、検索結果の一部として製品コードを返すことができます。
0.9.10はまだ公式リリースではありませんが、見栄えがします。 ZawodnyがCraig'sListで実行しているようです だから私はこの機能に頼ることについてあまり緊張しません。