2011-06-17 5 views
2

J'ai un problème avec Sphinx. J'ai la configuration comme ceci:Problème de sphinx. Filtre

sql_query    = \ 
     SELECT id, product_title, product_inf, product_code, ptype_name, title, cat, value, car \ 
     FROM Catalog_View; 
sql_attr_uint   = car 
sql_attr_uint   = cat 

Catalog_View est une vue qui collecter des données de plusieurs tables. Cela fonctionne bien et n'a aucun problème. J'ai créé l'index avec cette configuration:

index src1 
{ 
    source   = src1 
    path   = /var/data/src1 
    docinfo   = extern 
    mlock   = 0 
    morphology  = stem_en, stem_ru 
    min_word_len  = 3 
    charset_type  = sbcs 
    min_prefix_len = 0 
    min_infix_len  = 3 
    enable_star  = 1 
} 

Et l'indexeur a fait son travail parfait. Mais quand je suis à la recherche de requête vide (comme ceci '') et configurer deux filtres

$cl->SetFilter('cat',array(9)); 
$cl->SetFilter('car',array(2)); 

Je perds beaucoup de matches. Par exemple, lorsque j'utilise SQL-query pour Catalog_View, j'ai 76 lignes, et la même chose dans Sphinx ne me donne que 11 lignes. Je ne peux pas comprendre ce que je fais mal. Tout semble bien sauf filtre. En fait, j'ai le même problème avec les filtres lorsque je cherche une requête non-vide.

+0

Dans votre requête utilisez-vous ET ou OU pour sélectionner ces deux colonnes? – datasage

+0

Je ne comprends pas de quoi vous parlez ... ma requête est une chaîne vide ('') ou quelques mots (comme 'voiture vend') – Anton

+0

Vous avez dit que vous avez fait une requête SQL et obtenu plus de résultats. Ma question est de savoir si vous avez utilisé AND ou OR sur les colonnes chat et voiture? Les filtres Sphinx sont ET'd ensemble, mais vous pouvez faire un ou à travers la requête elle-même. – datasage

Répondre

0

Je suis tombé sur celui-ci aussi. Ma solution rendait les ID de document uniques. Si vous avez dupliqué des ID de document, le résultat possible peut être le même. Je suppose que Sphinx ne prendrait que le premier document unique qui traite toutes les données dupliquées.