0
在一些情況下,Sphinx返回的結果沒有JOIN'd字段我聲明爲sql_attr_string's。採取以下源/索引配置爲例如:獅身人面像並不總是返回字符串屬性
source myapp_recipe
{
type = pgsql
sql_host =
sql_user = me
sql_pass = secret
sql_db = myapp_db
sql_port =
sql_query = \
SELECT myapp_recipe.id as id, \
myapp_recipe.name as name, \
myapp_recipe.cookbook_id as cookbook_id, \
myapp_cookbook.name as cookbook_name, \
'recipe' as content_type \
FROM myapp_recipe \
INNER JOIN myapp_cookbook \
ON myapp_recipe.cookbook_id = myapp_cookbook.id
#content_type for django
sql_attr_string = content_type
# stored string fields in the document
sql_attr_string = cookbook_name
# stored and indexed string fields
sql_field_string = name
# ForeignKey's
sql_attr_uint = cookbook_id
}
index myapp_recipe
{
source = myapp_recipe
path = /var/data/myapp_recipe
docinfo = extern
morphology = none
stopwords =
min_word_len = 2
charset_type = utf-8
min_prefix_len = 0
min_infix_len = 3
enable_star = 0
}
對於某些搜索,結果文檔是從content_type
和name
回來而不屬性一邊。對於不同的搜索,返回相同的文檔,Sphinx可能會很好地返回具有所有期望屬性的相同結果文檔。
示例: 對「pizza」的查詢將返回一個不完整的結果文檔(documentA),但不包含JOIN的字符串屬性。
查詢「披薩口袋」將返回相同的文檔(documentA)與所有預期的JOIN'd屬性。
任何人都可以解釋這種莫名其妙的行爲?
我沒有看到此配置的任何索引警告。我用這樣的調用搜索多個索引:client.Query(「pizza」,「myapp_table1 myapp_table2 myapp_table3」)。這可能與這個問題有關嗎? – patrickn
我有一個偷偷摸摸的懷疑,那就是問題,現在你已經把我放下了這條路 - 當我有來自多個索引的匹配時,問題似乎就會發生。任何想法如何避免這個問題? – patrickn
由於「文檔ID」是postgres中對象的「id」,我不確定如何在查詢多個索引時避免重複的id。 – patrickn