Currently, I am using lib-search to create faceted search with a XML repository 
stored in Marklogic.

The problem I am having is that I am have elements in my documents that have 
the same label "name", but have different hierarchy. Here is a sample of these 
elements:

* For creator name:

<ddms:creator>
   <ddms:Person>
        <ddms:name>George Wallace</ddms:name>
        <ddms:surname>Wallace</ddms:surname>
        <ddms:affiliation>NBCC</ddms:affiliation>
   </ddms:Person>
</ddms:creator>
        
* For publisher name:

<ddms:publisher>
  <ddms:Organization>
    <ddms:name>British Forces Press Service</ddms:name>
  </ddms:Organization>
</ddms:publisher>

* For creator organization name:

<ddms:creator>
  <ddms:Organization>
    <ddms:name>Office of the Press Secretary</ddms:name>
  </ddms:Organization>
</ddms:creator>

When I create my facets, my results show that everything that has label "name" 
belongs to the same results, whether a element "name" result belongs to a child 
element of "organization" or "person".

- <search:facets xmlns:search="http://www.marklogic.com/ps/lib/lib-search";>
- <search:facet>
- <search:facet-def>
- <search:value-facet>
- <search:element id="org-name">
  <search:namespace>http://metadata.dod.mil/mdr/ns/DDMS/1.4/</search:namespace> 
  <search:local-name>name</search:local-name> 
  </search:element>
  <search:top>50</search:top> 
  </search:value-facet>
- <search:custom>
  <search:sort>name-asc</search:sort> 
  <search:qs-id>org-name</search:qs-id> 
  <search:title>Organizations</search:title> 
  </search:custom>
  </search:facet-def>
  <search:all count="4" /> 
  <search:item value="Iraq" count="2">Iraq</search:item> 
  <search:item value="American Forces Press Service" count="1">American Forces 
Press Service</search:item> 
  <search:item value="British Forces Press Service" count="1">British Forces 
Press Service</search:item> 
  <search:item value="CNN" count="1">CNN</search:item> 
  <search:item value="Donna Miles" count="1">Donna Miles</search:item> 
  <search:item value="FOX" count="1">FOX</search:item> 
  <search:item value="George Wallace" count="1">George Wallace</search:item> 
  </search:facet>
- <search:facet>
- <search:facet-def>
- <search:value-facet>
- <search:element id="person-name">
  <search:namespace>http://metadata.dod.mil/mdr/ns/DDMS/1.4/</search:namespace> 
  <search:local-name>name</search:local-name> 
  </search:element>
  <search:top>10</search:top> 
  </search:value-facet>
- <search:custom>
  <search:sort>name-asc</search:sort> 
  <search:qs-id>person-name</search:qs-id> 
  <search:title>Person Name</search:title> 
  </search:custom>
  </search:facet-def>
  <search:all count="4" /> 
  <search:item value="Iraq" count="2">Iraq</search:item> 
  <search:item value="American Forces Press Service" count="1">American Forces 
Press Service</search:item> 
  <search:item value="British Forces Press Service" count="1">British Forces 
Press Service</search:item> 
  <search:item value="CNN" count="1">CNN</search:item> 
  <search:item value="Donna Miles" count="1">Donna Miles</search:item> 
  <search:item value="FOX" count="1">FOX</search:item> 
  <search:item value="George Wallace" count="1">George Wallace</search:item> 
  </search:facet>
- <search:facet>
- <search:facet-def>
- <search:value-facet>
- <search:element-attr id="keyword">
  <search:namespace>http://metadata.dod.mil/mdr/ns/DDMS/1.4/</search:namespace> 
  <search:local-name>keyword</search:local-name> 
  <search:attr-local-name>value</search:attr-local-name> 
  </search:element-attr>
  <search:top>10</search:top> 
  </search:value-facet>
- <search:custom>
  <search:sort>name-asc</search:sort> 
  <search:qs-id>keyword</search:qs-id> 
  <search:title>Keyword</search:title> 
  </search:custom>
  </search:facet-def>
  <search:all count="4" /> 
  </search:facet>
  </search:facets>

How I can make my search display the correct "name" element results for parent 
elements "organization" and "person"?

Here is how I configure my search:

define variable $LIB-SEARCH-CONFIG as element(cfg:config) 
{
    <config
        xmlns="http://www.marklogic.com/ps/lib/lib-search/config";
        xmlns:search="http://www.marklogic.com/ps/lib/lib-search";
        xmlns:lp="http://www.marklogic.com/ps/lib/lib-parser";>
        <search>
                    <namespaces>
                                <namespace 
prefix="ddms">http://metadata.dod.mil/mdr/ns/DDMS/1.4/</namespace>
                </namespaces>
                <sort-fields>
                        <sort-field id="ddms:posted" type="xs:date" 
direction="descending">DOCUMENT/ddms:Resource/ddms:dates/ddms:posted</sort-field>
                                <sort-field id="ddms:title" type="xs:string" 
direction="descending">DOCUMENT/ddms:Resource/ddms:title</sort-field>
                                <sort-field id="ddms:name" type="xs:string" 
direction="descending">DOCUMENT/ddms:Resource/ddms:creator/ddms:Organization/name</sort-field>
                </sort-fields>
                <lp:search-field-map>
                        <lp:mapping code="title"><ddms:title/></lp:mapping>
                                <lp:mapping 
code="date-posted"><ddms:posted/></lp:mapping>
                                <lp:mapping code="org"><ddms:name/></lp:mapping>
                </lp:search-field-map>
                <date-field>
                                <search:element>
                                        
<search:namespace>http://metadata.dod.mil/mdr/ns/DDMS/1.4/</search:namespace>
                                        
<search:local-name>posted</search:local-name>
                                </search:element>
                        </date-field>
                        <collation>http://marklogic.com/collation/</collation>
        </search>
        <facets>
                <default-do-count>true</default-do-count>
        </facets>
        <scope>
                        <search:element id="person-name">
                        
<search:namespace>http://metadata.dod.mil/mdr/ns/DDMS/1.4/</search:namespace>
                        <search:local-name>name</search:local-name>
                </search:element>
                        
                <search:element id="org-name">
                        
<search:namespace>http://metadata.dod.mil/mdr/ns/DDMS/1.4/</search:namespace>
                        <search:local-name>name</search:local-name>
                </search:element>
                        
                        <search:element id="subjectCoverage">
                                
<search:namespace>http://metadata.dod.mil/mdr/ns/DDMS/1.4/</search:namespace>
                        <search:local-name>subjectCoverage</search:local-name>
                        </search:element>
                        
                <search:element-attr id="category">
                        
<search:namespace>http://metadata.dod.mil/mdr/ns/DDMS/1.4/</search:namespace>
                        <search:local-name>category</search:local-name>
                        <search:attr-local-name>label</search:attr-local-name>
                </search:element-attr>
                        
                        <search:element-attr id="keyword">
                        
<search:namespace>http://metadata.dod.mil/mdr/ns/DDMS/1.4/</search:namespace>
                        <search:local-name>keyword</search:local-name>
                        <search:attr-local-name>value</search:attr-local-name>
                </search:element-attr>
        </scope>
        <debug>true</debug>
    </config>
}

Thanks.

Federico Carbonell
Hewlett Packard 
[EMAIL PROTECTED]
_______________________________________________
General mailing list
[email protected]
http://xqzone.com/mailman/listinfo/general

Reply via email to