2012-06-08 3 views
1

J'ai quelques champs dans mon schéma ci-dessous:solr notation pour la requête de filtre

hotel_name: un nom d'hôtel

ville: une ville

county_code: DE

rue: une rue .

Ma requête pour trouver des hôtels ressemble à ceci.

select/fq=city:"Berlin"&fq=country_code"DE"&fq=hotel_name:"achat berlin hotel"=city:"Berlin"&fq=country_code"DE"&fq=hotel_name:"achat berlin hotel" 

Renvoie des valeurs, ajoute un nombre important d'hôtels trouvés avec un ou plusieurs jetons dans le champ nom_hôtel. Si je veux abréger, ces documents par numéro du jeton correspondant dans les fichiers hotel_name, comment puis-je faire cela. Je souhaite conserver le nombre maximal de jeton correspondant dans le champ nom_hôtel en haut.

E.G. Si le nom de l'hôtel coïncide avec les trois jetons: achat, berlin et hôtel, il doit apparaître en haut. et une correspondance inférieure devrait apparaître ci-dessous.

Est-il possible de marquer un document en fonction du nombre de token correspondant par champ.

Répondre

0

Quel est le type du champ "nom_hotel" dans le fichier schema.xml?

Aussi, avez-vous déjà essayé? Par défaut, Solr prend en compte le facteur de coordination:

"s'il y a plusieurs termes dans une requête, plus le nombre de termes correspond, plus le score est élevé". Donc, je suppose que cela se passe déjà dans votre cas.

+0

cela ne se fait pas automatiquement. Parfois, je reçois des documents avec moins de correspondance, à l'avance, plus de correspondance. nom_hotel est du type: –

2

Eh bien, tout d'abord, votre requête est mal formée. Vous devez démarrer la requête avec un ?, un paramètre q fourni, fournir un : entre le nom du champ country_code et la valeur, et vous n'avez pas besoin de répéter les paramètres fq. Il devrait être:

?q=*:*&fq=city:"Berlin"&fq=country_code:"DE"&fq=hotel_name:"achat berlin hotel" 

Le hotel_name, country_code et city ces paramètres fq seront tokenizés et analysés en fonction de votre schema.xml et peuvent correspondre exactement ou non en fonction de la pente de la requête que vous avez spécifié dans solrconfig.xml.

Est-il possible de marquer un document en fonction du nombre de jetons appariés par champ.

La notation dans solr n'est pas ce littéral, donc non, pas exactement.

E.G. Si le nom de l'hôtel cotain tous les trois jetons: achat, berlin et hôtel, il devrait apparaître en haut. et une correspondance inférieure devrait apparaître ci-dessous.

Vous avez fourni la requête comme une phrase (il est cité avec " s), de sorte solr volonté par défaut trouver cette expression exacte, et de lui donner un score associé. Si query slop (le paramètre qs) est configuré dans votre solrconfig.xml, un score provenant d'une requête bâclée sera également ajouté.Ce que vous voulez probablement, c'est:

hotel_name:achat berlin hotel 

Ce qui est une requête sans expression.

Questions connexes