Alakaya göre bir tam metin arama ve sıralama için Doctrine_RawSql nasıl kullanılır

1 Cevap php

I'm trying to get fulltext searches to be sorted by relevance in a Doctrine_RawSql query.

Bu kod arama gerçekleştirir:

$q = new Doctrine_RawSql();

$q->select('{p.*}')
  ->from('cms_page p')
  ->where('match(p.content) against (?)', $user_query)
  ->addComponent('p', 'CmsPage p');

Bu yürütecek. Ben sonuçları alakaya göre sıralanmasını istiyorum

Gerçek sql gibi bir şey olurdu:

select 
  p.id, 
  match(p.content) against (?) as score 
from 
  cms_page as p
order by 
  score desc;

Yani seçme o maç ... fıkrasına aykırı almak gerekir ... Ben düşünüyorum.

Bu gerçekleştirerek Benim crapshoot tahminim oldu:

$q->select("{p.id}, match({p.content}) against ('$escaped_user_query') as score")
  ->from('cms_page p')
  ->orderBy('score DESC')
  ->addComponent('p', 'CmsPage p');

Bu işe yaramazsa. Herhangi bir işaretçiler?

Şimdiden teşekkürler!

1 Cevap

MySQL FULLTEXT doğal dil arama dokümanlar göre:

MATCH () daha önce gösterilen örnekte olduğu gibi, bir WHERE madde, kullanıldığında, döndürülen satır automatically sorted with the highest relevance first vardır. Uygunluk değerleri negatif olmayan kayan noktalı sayılardır. Sıfır alaka hiçbir benzerlik anlamına gelir. Uygunluk satırda kelime sayısına göre hesaplanır, bu satırın benzersiz kelimelerin sayısı, koleksiyonunda kelimelerin toplam sayısı ve belirli bir kelimeyi içeren belgeler (satır) sayısı.

Bu sizin için işe yaramazsa?

Eğer doğal Fulltext MySQL arama here. hakkında daha fazla bilgi bulabilirsiniz