2012-08-04 4 views
2
<dataConfig> 
     <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver">   
     <document> 
       <entity name="MALE_PROFILES" 
       query="SELECT ID , COLUMN1 , COLUMN2,male FROM MALE_PROFILES " 
       transformer="RegexTransformer"> 
         <field name="id" column="ID"> 
       </entity> 
       <entity name="FEMALE_PROFILES" 
       query="SELECT ID , COLUMN1 , COLUMN2,female FROM FEMALE_PROFILES" 
       transformer="RegexTransformer"> 
         <field name="id" column="ID"> 
       </entity> 
     </document> 
</dataConfig> 

Actuellement, ma recherche est basée sur l'homme et la femme, qui devrait être lente. Puis-je effectuer une recherche en fonction du nom de l'entité, comme MALE_PROFILE?Solr RECHERCHE PAR nom d'entité

Répondre

2

Cela ne va pas être lent, sauf si vous avez beaucoup, beaucoup d'enregistrements avec une taille d'index énorme.
Pour la recherche basée sur des entités, vous pouvez ajouter un identificateur aux profils masculin et féminin et utiliser filter queries pour limiter les entités recherchées qui utiliseront également le filter cache. par exemple.

si vous ajoutez une colonne fixe avec votre mâle et entités féminines,

ID SELECT, COLUMN1, COLUMN2, mâle, 'MALE' AS PROFILE DE MALE_PROFILES

vous pouvez appliquer le filtre à l'aide fq profil =: MALE

+0

mais je suppose que dans ce cas, il faut chercher dans des dossiers plus volumineux. J'ai 6 tels index chacun ayant 10 lacs enregistrements donc si je suppose qu'il est préférable de chercher dans 10 lac record alors dans 60 lacets enregistrement –

+0

Un noyau pour les enregistrements de 60 lacs fonctionnerait toujours bien. Quelle est la taille de votre index? Nous avons plus d'un million d'enregistrements dans un seul cœur et la réponse est dans les ms, mais cela dépend aussi du type de données et des configurations. – Jayendra