2011-11-02 3 views
1

Je suis nouveau à solr. Je veux rechercher la base de données. Je suis capable d'importer les valeurs et de les indexer. Mais lors de la recherche, il semble que le nom du champ soit nécessaire pour être mentionné dans la requête de recherche. Cela peut être fait sans spécifier les noms des champs.solr data-import recherche

Répondre

0

Vous pouvez importer toutes les données dans default field. Ensuite, vous n'avez pas besoin de mentionner explicitement les noms de champs. (Bien que vous pouvez toujours si vous voulez)

La valeur par défaut schema.xml avec Solr contient déjà un exemple pour utiliser un tel champ « catchall »:

D'abord le champ doit être déclarée comme tout autre domaine:

<field name="text" type="text_general" indexed="true" 
     stored="false" multiValued="true"/> 

Ensuite, ce nouveau champ doit être déclaré le champ par défaut. Chaque fois que aucun champ spécifique est recherché, celui-ci sera recherché:

<defaultSearchField>text</defaultSearchField> 

Vous devez aussi quelques copyField déclarations qui copient tous les champs existants dans le champ catchall:

<copyField source="cat" dest="text"/> 
<copyField source="name" dest="text"/> 
<copyField source="my_special_field_1" dest="text"/> 
<copyField source="my_special_field_2" dest="text"/> 
... 

Donc chaque fois que le champ my_special_field_1 est indexé sa valeur est également ajouté au champ text.

Comme un raccourci, vous pouvez copier tous les champs dans le champ text avec

<copyField source="*" dest="text"/> 

Après cela, vous pouvez effectuer des recherches sans spécifier un champ.

+0

merci pour votre réponse rapide. Je veux juste confirmer que si je copie tous les champs cela causera un problème de performance. Je veux dire en raison de copyfield sont les valeurs stockées deux fois. – user1025397

+0

Cela augmentera la taille de votre index mais pas le temps de recherche (par rapport à l'affichage explicite de tous les champs de votre requête) Aussi puisque le paramètre 'stored' est faux, les données d'origine ne sont pas stockées, donc l'index devrait être modéré. –

+0

merci encore. Dernier mais non le moindre, j'ai trois tables différentes, toutes ayant des noms de champs différents, après l'indexation et la recherche, je reçois la liste des résultats de recherche. d'ici comment puis-je distinguer différents enregistrements de table? – user1025397

Questions connexes