Her yazı etiketleme olmadan nasıl ilgili mesajları uygulamak özelliği?

2 Cevap php

We have 2 text fields ('post_text' & 'post_slug') in our database. Let's say, post_text = "Hello World!", so its post_slug = "hello-world". How to implement related posts feature without tagging each posts operating only existing fields? (PHP, MySQL)

P.S. veritabanı mesajların bir sürü içerir.

2 Cevap

check out the similar_text function http://jp2.php.net/manual/en/function.similar-text.php

ya da belki boşluklarla her kelimeyi bölmek ve kendi algoritması ile ilişkisini caculate.

mysql için bir tablo eklemek için mümkün olmadığını ve her yazının hesaplanan ilişkisini tutan bir tablo oluşturmanız gerekir.

CREATE TABLE blog_table.`posts_relation` (
`post_id` INT UNSIGNED NOT NULL ,
`related_post_id` INT UNSIGNED NOT NULL ,
`relation` FLOAT UNSIGNED NOT NULL ,
INDEX ( `post_id` , `related_post_id` ) 
)

Her bir yazı eklemek zaman, ya da belki bir günde bir kez güncelleyin.

ve benzeri bir şey ile sonuçları kapmak

SELECT posts.* FROM posts, posts_relation WHERE posts_relation.post_id = {$post_id} AND posts.post_id = posts_relation.related_post_id ORDER BY posts_relation.relation DESC LIMIT 5

Sadece bir not: kesinlikle anında çünkü yere çok fazla iş ve imkansız arasında olacak büyük bir veritabanı üzerinde bir sayfayı görüntülemek her zaman için ilgili mesajları hesaplamak istemiyorum.

Normalde periyodik olarak kullandığınız ne olursa olsun algoritma çalıştırmak ve orijinal tabloya başvuran ayrı bir tabloda bilgileri kaydetmek istiyorum. Bir yazı gösteriliyor sonra sadece basit bir katılmak olacaktır.