i wonder if ccl specifications $YAZ_attributes and $CCL_names
can be "misused to define a more complex query not just terms appended ...
e.g we define each qualifier in $YAZ_attributes:
"bge_tit" => "u=4 r=3 p=3 s=pw t=100 c=1"
serves as a qualifier
QUESTION
would it be wise to use something like
"bge_tit" => "(( u=4 r=3 p=3 s=pw t=100 c=1) or ( u=8004 r=3 p=3
s=pw t=100 c=1 ))" ?
???????????
--------
as another thing i have not quite understood the role of $CCL_names.
"bge_tit" => "tit"
does it define just an alias or can i do more with it ?
======================
after revising the data model of emilda's marc usage and having the
problem to merge VERY different records of varois sources into _Native
if would opt in general to :
1) define any searches to be done as symbolic names on pseudo-fields
(like the pseudo-entry "any")
in "table marc_configuration" as not_editable, searchable, not_list,
not_extended
and map them to private bib-1-attributes (>=5000)
e.g.
('bge_tit','','bge_tit','','','Titel',0,1,1,0,0),
2) define any "real" fields
in "table marc_configuration" as editable, not_searchable, ??_list,
??_extended
e.g.
#->5000 bge-tit (245c:)->5001 bge-aut
('245','all','book00_title','','','Titel',1,0,1,1,1),
('245a',NULL,'book00_title_hst','','','Hauptsachtitel',1,0,1,0,0),
('245b',NULL,'book00_rem_of_title','','','Sonstige-Titelteile',1,0,1,0,0),
('245c',NULL,'book00_stm_of_resp','','','Verfasser',1,0,1,0,0),
('246','all','book01_title','','','Nebentitel und Variationen',1,0,1,0,1),
('246a',NULL,'book01_title_nst','','','Nebensachtitel',1,0,1,0,0),
('130','all','book02_title','','','Einheitssachtitel-Haupteintrag',1,0,1,0,1),
('130a',NULL,'book02_title_est','','','Einheitssachtitel',1,0,1,0,0),
('730','all','book03_title','','','Einheitssachtitel-Nebeneintrag',1,0,1,0,1),
('730a',NULL,'book03_title_est','','','Einheitssachtitel',1,0,1,0,0),
('490','all','book04_title','','','Serientitel-Vorlage/Verweisform',1,0,1,1,1),
('490a',NULL,'book04_title_est','','','Serientitel',1,0,1,0,0),
('440','all','book05_title','','','Übergeordnete-Gesamteinheit',1,0,1,0,1),
('440a',NULL,'book05_title_est','','','Serientitel',1,0,1,0,0),
#->5001 bge-aut
('100','all','book00_author','','','Hauptautor-Person',1,0,1,1,1),
('100a',NULL,'book00_author_personal_name','','','Hauptautor-Person-Name',1,0,1,0,0),
('700','all','book01_author','','','Nebenautor-Person',1,0,1,0,1),
('700a',NULL,'book01_author_personal_name','','','Nebenautor-Person-Name',1,0,1,0,0),
('110','all','book00_author_corp','','','Hauptautor-Korporation',1,0,1,1,1),
('110a',NULL,'book00_author_corp_name','','','Hauptautor-Korporation-Name',1,0,1,0,0),
('710','all','book01_author_corp','','','Nebenautor-Korporation',1,0,1,0,1),
('710a',NULL,'book01_author_corp_name','','','Nebenautor-Korporation-Name',1,0,1,0,0),
3) set up bib1.attr and usmarc.abs to index them accordingly
e.g.
att 5000 bge-tit
att 5001 bge-aut
....
att 5999 bge-null
att 1016 any
1016,5000,5001,5002,5003,5004,5005,5006,5010,5011,5012,5014,5016
e.g.
elm 245 bge-null -
elm 245/? bge-tit !:w,!:p,!:s
elm 245/?/c bge-aut !:w,!:p,!:s
elm 246 bge-null -
elm 246/? bge-null -
elm 246/?/a bge-tit !:w,!:p,!:s
elm 130 bge-null -
elm 130/? bge-null -
elm 130/?/a bge-tit !:w,!:p,!:s
elm 730 bge-null -
elm 730/? bge-null -
elm 730/?/a bge-tit !:w,!:p,!:s
elm 490 bge-null -
elm 490/? bge-null -
elm 490/?/a bge-tit !:w,!:p,!:s
elm 440 bge-null -
elm 440/? bge-null -
elm 440/?/a bge-tit !:w,!:p,!:s
elm 245 bge-null -
elm 245/? bge-tit !:w,!:p,!:s
elm 245/?/c bge-aut !:w,!:p,!:s
elm 246 bge-null -
elm 246/? bge-null -
elm 246/?/a bge-tit !:w,!:p,!:s
elm 130 bge-null -
elm 130/? bge-null -
elm 130/?/a bge-tit !:w,!:p,!:s
elm 730 bge-null -
elm 730/? bge-null -
elm 730/?/a bge-tit !:w,!:p,!:s
elm 490 bge-null -
elm 490/? bge-null -
elm 490/?/a bge-tit !:w,!:p,!:s
elm 440 bge-null -
elm 440/? bge-null -
elm 440/?/a bge-tit !:w,!:p,!:s
3) set up MARC.inc accordingly
$YAZ_attributes = Array(
$REMOTE_DATABASE[_("Native")] => Array(
"any" => "u=1016 t=l t=r t=n
t=b s=pw",
"bge_tit" => "u=5000 t=l t=r t=n
t=b s=pw",
"bge_aut" => "u=5001 t=l t=r t=n
t=b s=pw",
//...
),
$REMOTE_DATABASE["GBV"] => Array(
"any" => "u=1016 r=3 p=3
s=2 t=100 c=1", //word
"bge_tit" => "u=4 r=3 p=3
s=pw t=100 c=1", //phrase,word
"bge_aut" => "u=1004 r=3 p=3
s=1 t=100 c=1", //phrase
//...
),
);
==> THINGS WON (i hope) :
a) a clear design without having to "pivot" every entity exactly to one
MARC-field
b) i can process various records from various sources very differently
(including the Native source)
which can be populated from any target-z3950-servers which might speak
very different "dialects"
c) it is very easy to incorporate changes
d) i can establish search-field-names which are NOT bound to the names
of MARC-fields
e) as MARC-fields are often not clearly assigned to one dedicated
bibliographic entity but often merge things i can cope with this easily
(note e.g. the special case field 245c is typically author-, not
title-related)
f) as one bibliographic entity is often spread over various MARC-fields
and i have to collect things i can cope with this easily
(note e.g. subjects which are found in at leasst 20 places on 2
different servers)
--------
comments welcome
w.pichler
|