“问题” 和“派发处理” 是2个对象。 每个问题可以被派发N次, 最后结束问题。

实际查询中数据量可能很大,同时即可以从问题查派发部门, 也可以从派发情况查询问题(如本部门处理的问题)

使用的技巧就是:增加doc_id, doc_type字段。 实现多Entity查询。

 

schema.xml

  1 <?xml version="1.0" encoding="UTF-8" ?>
  2 <schema name="uum" version="1.2">
  3   <types>
  4     <fieldType name="boolean" class="solr.BoolField"/>
  5     <fieldType name="date" class="solr.TrieDateField"/>
  6     <fieldType name="float" class="solr.TrieFloatField"/>
  7     <fieldType name="int" class="solr.TrieIntField"/>
  8     <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
  9     <fieldType name="string" class="solr.StrField"/>
 10     <fieldType name="url" class="solr.StrField" indexed="false" stored="true" />
 11 
 12     <fieldType name="simpletext" 
 13                class="solr.TextField" 
 14                positionIncrementGap="100">
 15       <analyzer>
 16         <tokenizer class="solr.StandardTokenizerFactory"/>
 17         <filter class="solr.LowerCaseFilterFactory"/>
 18       </analyzer>
 19     </fieldType>
 20 
 21     <fieldType name="ignored" class="solr.StrField" 
 22                indexed="false" stored="false" />
 23                
 24    <fieldType name="date_l" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
 25                
 26   </types>
 27     
 28   <fields>
 29 
 30     <!--
 31        FIELDS THAT ARE IN DOCS OF MULTIPLE TYPES
 32       -->
 33 
 34     <!-- this will be our uniqueKey, so it has to be distinct across
 35          all types of documents
 36       -->
 37     <field name="doc_id" type="string" />
 38 
 39     <!-- the type (or domain) of our document -->
 40     <field name="doc_type" type="string" />
 41 
 42     <!-- external URLs -->
 43     <dynamicField name="*_url" type="url" multiValued="false" />
 44     <dynamicField name="*_urls" type="url" multiValued="true"/>
 45 
 46     <!-- dates -->
 47     <dynamicField name="*_dt" type="date" />
 48 
 49     <!-- numeric values that might come in hand for relevancy biasing
 50          (they all relate to popularity)
 51       -->
 52     <dynamicField name="*_count" type="int" multiValued="false"/>
 53 
 54     <field name="_version_" type="long" indexed="true" stored="true"/>
 55     <field name="_root_" type="string" indexed="true" stored="false"/>
 56     <!-- Field used by Suggester for autocompletion -->
 57     <field name="autocomplete" 
 58            type="simpletext" 
 59            stored="false" 
 60            multiValued="true" />
 61 
 62     <!-- quick search field -->
 63     <field name="catchall" 
 64            type="simpletext" 
 65            stored="false"
 66            omitNorms="true"
 67            multiValued="true" />
 68     <field name="ID" type="string" multiValued="false"/>
 69     
 70     <!-- 
 71        PETITION
 72       -->
 73     <field name="TenantId"  type="string" multiValued="false"/>
 74     <field name="PetitionId"  type="string" multiValued="false"/>
 75     <field name="PetitionNumber"  type="string" multiValued="false"/>
 76     <field name="Title"  type="simpletext" multiValued="false"/>
 77     <field name="Content"  type="simpletext" multiValued="false"/>
 78     <field name="Tel"  type="string" multiValued="false"/>
 79     <field name="EventAddress"  type="simpletext" multiValued="false"/>
 80     <field name="DutyGridName"  type="string" multiValued="false"/>
 81     <field name="ComplaintType"  type="string" multiValued="false"/>
 82     <field name="IsVoid"  type="boolean" multiValued="false"/>
 83     <field name="IsEnd"  type="boolean" multiValued="false"/>
 84     <field name="GridAddress"  type="simpletext" multiValued="false"/>
 85     <field name="CategoryName"  type="string" multiValued="false"/>
 86     <field name="Category"  type="string" multiValued="false"/>
 87     
 88     <field name="Status"  type="string" multiValued="false"/>
 89     <field name="RegisterOn"  type="date" multiValued="false"/>
 90     <field name="DeadLine"  type="date" multiValued="false"/>
 91     <field name="ReportOn"  type="date" multiValued="false"/>
 92     <field name="EndCaseOn"  type="date" multiValued="false"/>
 93     <field name="CreatedBy"  type="string" multiValued="false"/>
 94     <field name="SourceWay"  type="string" multiValued="false"/>
 95     <field name="ISWGXTSB"  type="string" multiValued="false"/>
 96     <field name="RegisterOffice"  type="string" multiValued="false"/>
 97     <field name="EventLevel"  type="string" multiValued="false"/>
 98     <field name="ImportantLevel"  type="string" multiValued="false"/>
 99     
100         <!--
101                 PETITION/DISPATCH
102         -->
103           <field name="DispatchOffices" type="string" multiValued="true"/>
104           <!--<field name="DispatchOfficeNames" />-->
105           <field name="ReceiveOffices"  type="string" multiValued="true"/>
106           <field name="ReceiveOfficeNames"  type="string" multiValued="true"/>
107           
108         
109         <!--
110                 PETITION/PARTICIPANT
111         -->
112           <field name="OrgUnits" type="string" multiValued="true"/>
113           <field name="Participants"  type="string" multiValued="true"/>
114 
115     <!-- 
116        DISPATCH
117       -->
118 
119       <field name="Dispatcher" type="string" multiValued="false"/>
120       <field name="DispatchOn" type="date" multiValued="false"/>
121       <field name="DispatchOffice" type="string" multiValued="false"/>
122       <field name="DispatchOfficeName" type="string" multiValued="false"/>
123       <field name="ReceiveOffice" type="string" multiValued="false"/>
124       <field name="ReceiveOfficeName" type="string" multiValued="false"/>
125       <field name="StartOn"  type="date" multiValued="false"/>
126       <field name="DealWay"  type="string" multiValued="false"/>
127       <field name="FeedBackType"  type="string" multiValued="false"/>
128       <field name="FeedBackPeople"  type="string" multiValued="false"/>
129       <field name="FeedBackOn"   type="date" multiValued="false"/>
130       <field name="FeedBackMsg"   type="simpletext" multiValued="false"/>
131       <field name="NoPublicOpinion"   type="simpletext" multiValued="false"/>
132       <field name="IsPublic"  type="boolean" multiValued="false"/>
133       <field name="IsAlreadyReply"  type="boolean" multiValued="false"/>
134       <field name="IsAlreadyContact"  type="boolean" multiValued="false"/>
135 
136   </fields>
137 
138 
139   <!-- copy author names and title titles to a field to autocomplete
140   <copyField source="canonical_name" dest="autocomplete"/>
141   <copyField source="title" dest="autocomplete"/> -->
142   
143   <!-- copy everything into one big field for easy searching -->
144   <copyField source="PetitionNumber" dest="catchall"/>
145   <copyField source="Title" dest="catchall"/>
146   <copyField source="Content" dest="catchall"/>
147   <copyField source="Tel" dest="catchall"/>
148   <copyField source="EventAddress" dest="catchall"/>
149 
150   <!-- A unique Key field isn't neccessary, but it's the only way Solr -->
151   <!-- can automaticly replace docs when they change -->
152   <!-- DataImportHandler is also very unhappy if you don't have one -->
153   <uniqueKey>doc_id</uniqueKey>
154 
155   <!-- It's a *very* good idea to have a default search field -->
156   <defaultSearchField>catchall</defaultSearchField>
157 
158 </schema>
schema.xml

相关文章: