2016-04-05 15 views
0

Filmlerim var (movie_id, title), bir filmin birçok başlığı olabilir (farklı diller). Tüm başlıklar ile tam metin araması yapmak istiyorum, o zaman aynı alaka düzeyine sahip filmler tarihe göre sıralanmalıdır. Şimdi sfenks kullanarak ve yapıyorum:Sfenks: Varsayılan sıralama yöntemini nasıl değiştirebilirim?

sql_joined_field = all_movie_titles from query; select movie_id as id, title  from tbl_movie_titles order by movie_id 

O Anlıyorum gibi bir film her başlıkta bu şekilde, arama için anahtar kelimenin sfenks arama eşleşmeleri kullanılan tek alan, ama bazı filmler 2 var başlıklar, bir diğeri ise, örneğin 10. Bir anahtar kelimenin farklı başlıklarda çoğaltılmasından dolayı, sfenks, sonuç alaka düzeyi, bir filmin tüm başlıklarındaki eşleşmelere bağlıdır. Bu nedenle, aynı alaka düzeyine sahip olması gereken iki film farklı ağırlığa sahiptir. Farklı satıcıları kullanmaya çalıştım, ancak sonuçta sonuçlar kötüydü. Bir filmin her bir başlığının ağırlığını bağımsız olarak hesaplamak için sfenksini nasıl yapabilirim ve en yüksek değeri alabilirim? Bu görev, başka bir arama motoru tarafından daha kolay çözülebilirse, elasticsearch gibi. Teşekkür

cevap

1

Etkili

Yani çoklu başlıklı film, kelimeler birden sahip olacak (tanımında 'katıldı') sadece bir uzun dize olarak birleştirilmiş tüm başlıkları içeren bir alan oluşturduk dediğiniz gibi, sıralamayı etkileyebilir.

Şu anda Sfenks'in belgesine sahip belgesini bir film olarak ayarlamak için kurulum yapıyormuşsunuz gibi görünüyor. yerine başlık başına bir belgeye sahip olmak (bakılmaksızın film için var hangi verileri) film başına yani bir belge


Bir seçenek değiştirmek olacaktır (yani film/dil kombinasyonu), sonra sıralama bir dilde 'içeride' olacaktır.

Siz (muhtemelen) film başına yalnızca bir sonucu sonucunu istiyorsanız, sorgu süresini GROUP BY seçeneğini kullanabilirsiniz. (Bu, movie_id'un attribute olarak bulunduğundan emin olmak anlamına gelir)

İlgili konular