PHP Arama Başlık ve Etiketler

4 Cevap php

Greetings, I'm thinking about the best way to implement a search on my website. I know about Sphinx and MySQL Full-text searches, however I'm not just searching a single field.

Bir makalenin başlığı ve bu makale ile ilişkili etiketler: ben aramak istiyorum iki şey var.

Ne yaptığımı düşünüyordum başka başlıktan anahtar kelimeleri içerecek yazımda tablo sütun, ve bu dizenin sonuna eklenen etiketlerin her tanımlar.

Makale başlığı 'bir ev sineması oluşturmak için nasıl' idi, ve etiketleri 'DIY', 'teknoloji' olsaydı Örneğin, bu alan 'ev sineması DIY teknolojisini inşa' olacaktır. Daha sonra bu alanda bir arama gerçekleştirebilir.

Ben bu yaklaşımın görmek sadece olumsuz etiketler güncellenmiş olsaydı, ben bu alan yanlış olma veya güncel açabileceği de bu alanı güncellemek zorunda olduğunu ifade etti.

Bunu yapmak için daha iyi bir yolu var mı?

4 Cevap

Sfenks birden çok sütun dayalı arama yapabilirsiniz. Hatta her sütun için "ağırlık" tanımlamanızı sağlar. Ben onunla sopa gerektiğini düşünüyorum.

Siz MyISAM MySQL bir tablo birden çok sütun üzerinde tam metin arama yapabilirsiniz.

Bkz:

$search = 'how to do short circuit evaluation?';
$q = 'SELECT * FROM `table` WHERE MATCH(tags, title, description) AGAINST ('.mysql_real_escape_string($search).' IN BOOLEAN MODE)';
$r = mysql_query($q);
//.. so on

başka bir tablo yaparken sürekli senkronizasyon gerektirir ve bu sistem için oldukça sıkıcı.

Lütfen etiketleri birçok ilişki için bir çok içinde olduğundan, onları almak ve sorgu içine birleştirebilirsiniz

$q = 'SELECT * FROM `table` WHERE'.
  ' MATCH(tags, title, '.
  '(SELECT  GROUP_CONCAT(`tag`) FROM `tags`'.
  'WHERE `ArticleID`='.(int)$ArticleID.')'.
  ') AGAINST ('.mysql_real_escape_string($search).' IN BOOLEAN MODE)';

Lütfen etiketleri için Sfenks çok değerli özelliklerini kullanın:

MVAS veya çok değerli özellikler, Sfenks niteliklerini belge başına önemli bir özel bir türüdür. MVAS mümkün her doküman değerleri listeleri eklemek için yapmak. Onlar makale etiketleri, ürün kategorileri, vb Filtreleme ve grup niteliklerini MVA (ancak sıralama değil) desteklenen için yararlıdır.

http://www.sphinxsearch.com/docs/current.html#mva

Sfenks, Lucene, ve hemen hemen tüm tam metin arama, tek alanda sınırlı değildir. Aslında, varsayılan tüm alanlarda arama ve daha sonra belirtilen olanlar için filtre etmektir. Ben iç MySQL arama büyük olmadığını düşünüyorum, Sfenks ve Lucene eklentileri çok daha iyi.