2010-11-17 7 views
1

J'utilise Solr avec Sunspot (ruby) et en raison d'autres contraintes, je dois utiliser l'analyseur Lucene à la place de l'analyseur DisMax. Je dois être en mesure de rechercher en utilisant nom d'utilisateur ainsi que prénoms champs en même temps. Si j'utilisais DisMax je peux spécifier qf = "nom d'utilisateur + prénom" mais en utilisant seulement l'analyseur lucene je ne peux que définir df (champ par défaut) et il ne me permettra pas de spécifier plus d'un champ.Recherche de champs multiples en utilisant Lucene Parser avec Solr en utilisant Sunspot

Comment puis-je rechercher plusieurs champs à l'aide de l'analyseur syntaxique?

Mise à jour: Réponse: il suffit d'utiliser le paramètre q

adjust_solr_params do |params| 
    params[:defType] = "lucene"  
    params[:q] = "username:\"#{params[:q]}\" OR first_name:\"#{params[:q]}\"" 
end 
+2

voulez-vous dire le gestionnaire de requêtes standard? as-tu essayé q = nom d'utilisateur: xy OU prénom: bob? vous pourriez même les amplifier différemment avec^2 ou similaire – Karussell

Répondre

1

Pour développer le commentaire de Karussell, le champ par défaut est juste celui, par défaut. Vous pouvez spécifier explicitement autant de champs que vous voulez, c'est seulement si vous n'en spécifiez pas un que la valeur par défaut entre en jeu.

Donc, une requête comme username:foo first_name:bar va trouver des documents avec un nom d'utilisateur de "foo" et un prénom de "bar".

2

Vous pouvez utiliser copy fields instructions dans votre schéma pour créer un « fourre-tout » champ de tous les champs que vous souhaitez rechercher. Vous définissez alors df à ce champ.

Questions connexes