2017-10-11 4 views
1

Solr la version 6.1.0Solr requête de recherche sur les champs non indexés

créé un schéma avec certains champs comme indexed=true sur lequel je veux plus précisément la principale requête solr q pour la recherche.

Et également ajouté plus de champs, que je voulais juste sélectionner, donc les marqué comme stored=true et indexed=false.

enter image description here

est maintenant question que la requête principale q=India est à la recherche sur les champs non indexés comme pays, que j'ai spécifié dans l'image.

Voir le résultat ci-dessous enter image description here

Il est de sélectionner le champ non indexé uniquement lorsque je précise la pleine valeur de champ non indexé.

voir le résultat pour q=Indi enter image description here

Comment puis-je limiter solr de la recherche sur les champs non-index?

Répondre

1

Selon la capture d'écran ci-dessus, vous copiez le contenu envoyé au champ country dans le champ _text_. Lorsque vous ne donnez pas à Solr un champ spécifique à rechercher (c'est-à-dire que vous n'utilisez pas l'un des gestionnaires dismax avec qf ou que vous ne préfixez pas votre terme avec le nom de champ field:value), cela revient au champ de recherche par défaut. Par défaut, il est défini sur _text_. Ce champ est indexé, et puisque vous copiez le contenu de votre champ de pays dans le champ _text_, les valeurs de country donneront un coup.

Si vous ne le souhaitez pas, ne copiez pas le contenu de country dans _text_, ou donnez à Solr le champ que vous souhaitez rechercher.

+0

J'ai plusieurs champs (pas tous) sur lesquels j'ai besoin de rechercher les données, selon https://wiki.apache.org/solr/SchemaXml#Common_field_options, les champs peuvent être interrogés s'ils sont marqués comme indexés = vrai, alors quand devrais-je mettre ma clé que je veux rechercher sur les champs indexés, j'ai essayé de le mettre en q (requête principale) et ça ne semble pas fonctionner. –

+0

Comme mentionné, vous pouvez utiliser 'qf' avec les gestionnaires (e) dismax (champs de requête - quels champs interroger) Cela vous permet de pondérer séparément les différents champs, donnant plus de poids à un champ par rapport à un autre -' qf = field1 field2^2' rend field2 deux fois plus important que field1), ou vous pouvez utiliser un champ commun comme dans ce cas que vous copiez tout dans, puis recherchez ce champ (comme dans '_text_' dans votre schéma actuel). Ou vous pouvez demander un hit dans un champ spécifique en utilisant 'q = field: value'. – MatsLindh