@@ -66,6 +66,23 @@ private function CleanID($string)
66
66
}
67
67
}
68
68
69
+ private function CleanForeignID ($ string )
70
+ {
71
+ if ( is_array ($ string ) )
72
+ {
73
+ foreach ($ string as &$ one )
74
+ {
75
+ $ one = $ this ->CleanID ($ one );
76
+ }
77
+ return $ string ;
78
+ }
79
+ else
80
+ {
81
+ $ string = trim ($ string , " ' \"" );
82
+ return str_replace (array ("( " ,") " ), array ("\( " ,"\) " ), substr ($ string ,0 ,8 )) . preg_replace ("/[^A-Z\(\)a-z0-9_]/ " , "" , substr ($ string ,8 ));
83
+ }
84
+ }
85
+
69
86
private function solr_edismax ($ search ,$ package ,$ facets )
70
87
{
71
88
@@ -82,7 +99,7 @@ private function solr_edismax($search,$package,$facets)
82
99
$ Tmp = explode (", " ,substr ($ search , 10 , strlen ($ search )-11 ));
83
100
foreach ($ Tmp as &$ One )
84
101
{
85
- $ One = $ this ->CleanID ($ One );
102
+ $ One = $ this ->CleanForeignID ($ One );
86
103
}
87
104
$ matches = array
88
105
(
@@ -134,12 +151,10 @@ private function solr_edismax($search,$package,$facets)
134
151
}
135
152
}
136
153
137
- // $this->CI->printArray2File($matches);
138
-
139
154
// Remove not allowed complex phrases based on used key
140
155
foreach ( $ matches [1 ] as $ index => $ key )
141
156
{
142
- if ( ! in_array (strtolower (trim ($ key )), array ("abruf " , "acqdate " ,"author " ,"autor " ,"call " ,"class " , "classlocal " ,
157
+ if ( ! in_array (strtolower (trim ($ key )), array ("abruf " , "acqdate " ,"author " ,"autor " ,"call " ,"class " , "classlocal " ," doi " ,
143
158
"client " ,"collection " ,"collection_details " ,"contents " ,"corporation " ,"country " ,"erwdatum " ,"foreignid " ,"format " ,"format2 " ,
144
159
"genre " ,"id " ,"inhalt " ,"isn " ,"jahr " ,"koerper " ,"land " ,"langcode " ,"language " ,"location " ,"mandant " ,"norm " ,"ppn " ,"ppnlink " ,"prov " ,"publisher " ,
145
160
"reihe " ,"sachgebiet " ,"schlagwort " ,"series " ,"signatur " ,"signature " ,"sprache " ,"sprachcode " ,"standort " ,"subject " ,"thema " ,"titel " ,
@@ -153,7 +168,6 @@ private function solr_edismax($search,$package,$facets)
153
168
// to build query string MainSearch
154
169
$ MainSearch = "" ;
155
170
$ search = trim ($ search );
156
- // $this->CI->printArray2File($search);
157
171
foreach ( $ matches [0 ] as $ index => $ complex )
158
172
{
159
173
$ CType = strtolower (trim ($ matches [1 ][$ index ]));
@@ -213,6 +227,9 @@ private function solr_edismax($search,$package,$facets)
213
227
case "classlocal " :
214
228
if ( isset ($ _SESSION ["iln " ]) ) $ MainSearch .= "(notation_local_iln_str_mv: " . $ _SESSION ["iln " ] . "\: " . $ Phrases [0 ] . ") " ;
215
229
break ;
230
+ case "doi " :
231
+ $ MainSearch .= "(doi_str_mv: " . $ Phrases [0 ] . ") " ;
232
+ break ;
216
233
case "isn " :
217
234
$ MainSearch .= "(issn: " . $ Phrases [0 ] . " OR isbn: " . $ Phrases [0 ] . ") " ;
218
235
break ;
@@ -274,7 +291,7 @@ private function solr_edismax($search,$package,$facets)
274
291
break ;
275
292
case "erwdatum " :
276
293
case "acqdate " :
277
- if ( isset ($ _SESSION ["iln " ]) ) $ MainSearch .= "(selektneu_str_mv : " . $ _SESSION ["iln " ] . "@ " . $ Phrases [0 ] . ") " ;
294
+ if ( isset ($ _SESSION ["iln " ]) ) $ MainSearch .= "(last_changed_iln_str_mv : " . $ _SESSION ["iln " ] . "@ " . $ Phrases [0 ] . ") " ;
278
295
break ;
279
296
case "abruf " :
280
297
case "call " :
@@ -314,14 +331,15 @@ private function solr_edismax($search,$package,$facets)
314
331
$ MainSearch .= "(publishDateSort: " . $ Phrases [0 ] . ") " ;
315
332
break ;
316
333
case "ppnlink " :
317
- $ MainSearch .= "(id : " . $ this ->CleanID ($ Phrases [0 ]) . ") " ;
334
+ $ MainSearch .= "(ppnlink : " . $ this ->CleanID ($ Phrases [0 ]) . ") " ;
318
335
break ;
319
336
case "id " :
320
337
case "ppn " :
321
338
$ MainSearch .= "(id: " . $ this ->CleanID ($ Phrases [0 ]) . ") " ;
322
339
break ;
323
340
default :
324
- $ MainSearch .= $ CType . "\: " . $ Phrases [0 ] . "" ;
341
+ // Kein Backslash bei diesem Doppelpunkt !!!
342
+ $ MainSearch .= $ CType . ": " . $ Phrases [0 ] . "" ;
325
343
}
326
344
}
327
345
else
@@ -368,6 +386,9 @@ private function solr_edismax($search,$package,$facets)
368
386
case "classlocal " :
369
387
if ( isset ($ _SESSION ["iln " ]) ) $ MainSearch .= "(notation_local_iln_str_mv: " . $ _SESSION ["iln " ] . "\: " . implode (" OR notation_local_iln_str_mv: " . $ _SESSION ["iln " ] . "\: " , $ Phrases ) . ") " ;
370
388
break ;
389
+ case "doi " :
390
+ $ MainSearch .= "(doi_str_mv: " . implode (" OR doi_str_mv: " , $ Phrases ) . ") " ;
391
+ break ;
371
392
case "isn " :
372
393
$ MainSearch .= "(issn: " . implode (" OR issn: " , $ Phrases ) . " OR "
373
394
. " isbn: " . implode (" OR isbn: " ,$ Phrases ) . ") " ;
@@ -399,7 +420,7 @@ private function solr_edismax($search,$package,$facets)
399
420
break ;
400
421
case "erwdatum " :
401
422
case "acqdate " :
402
- if ( isset ($ _SESSION ["iln " ]) ) $ MainSearch .= "(selektneu_str_mv : " . $ _SESSION ["iln " ] . "@ " . implode (" OR selektneu_str_mv : " . $ _SESSION ["iln " ] . "@ " , $ Phrases ) . ") " ;
423
+ if ( isset ($ _SESSION ["iln " ]) ) $ MainSearch .= "(last_changed_iln_str_mv : " . $ _SESSION ["iln " ] . "@ " . implode (" OR last_changed_iln_str_mv : " . $ _SESSION ["iln " ] . "@ " , $ Phrases ) . ") " ;
403
424
break ;
404
425
case "abruf " :
405
426
case "call " :
@@ -453,6 +474,7 @@ private function solr_edismax($search,$package,$facets)
453
474
$ MainSearch .= "(id: " . implode (" OR id: " , $ this ->CleanID ($ Phrases )) . ") " ;
454
475
break ;
455
476
default :
477
+ // Kein Backslash bei diesem Doppelpunkt !!!
456
478
$ MainSearch .= "( " . $ CType . ": " . implode (" OR " . $ CType . ": " ,$ Phrases ) . ") " ;
457
479
}
458
480
}
@@ -752,8 +774,6 @@ private function solr_edismax($search,$package,$facets)
752
774
// Store query in session
753
775
$ _SESSION ["query " ] = (string ) $ dismaxQuery ;
754
776
755
- // $this->CI->printArray2File($_SESSION["query"]);
756
-
757
777
// Execute query
758
778
try
759
779
{
@@ -830,7 +850,7 @@ public function search($search, $package, $facets, $params)
830
850
$ this ->facets = $ facets ;
831
851
832
852
if ( isset ($ params ['phonetic ' ] ) ) $ this ->phoneticsearch = $ params ['phonetic ' ];
833
-
853
+
834
854
// Before search
835
855
$ this ->search = $ this ->solr_before ($ this ->search );
836
856
@@ -890,17 +910,11 @@ public function getSimilarPublications($ppn)
890
910
->addFilterQuery ('collection_details:GBV_ILN_ ' . $ _SESSION ['iln ' ]);
891
911
}
892
912
893
- // Store query in file
894
- // $this->CI->printArray2File((string) $dismaxQuery);
895
-
896
913
// Execute query
897
914
$ query_response = $ client ->query ($ dismaxQuery );
898
915
899
916
$ container = $ query_response ->getResponse ();
900
917
901
- // Store answer in file
902
- // $this->CI->printArray2File($container);
903
-
904
918
$ PPNList = array ();
905
919
if ( isset ($ container ["moreLikeThis " ][1 ]["docs " ]))
906
920
{
0 commit comments