2013-06-24 268 views
0

我在MarkLogic數據庫上做search:search。我可以在術語「松果」上進行搜索,並返回297個帶片段的結果。我可以在「城市:溫哥華」上搜索並返回83個結果,其中包含片段。查詢「松果或城市:溫哥華」返回374個帶片段的結果。但是,查詢「松果和城市:溫哥華」返回6個結果的計數,但沒有結果元素和片段。任何想法爲什麼我沒有得到結果文本?MarkLogic搜索:搜索不返回片段

謝謝! Ravi Har

+0

您能否提供一些您希望查詢匹配的示例XML? – mblakele

+0

另外,那個「城市:」約束是如何定義的? –

回答

0

我似乎發現了這個問題。

的XML正在搜索這個樣子的:

<lecture objectType="lecture"> 
    <city>Vancouver</city> 
    <state>British Columbia</state> 
    <country>Canada</country> 
    <formattedTranscript> 
     <body class="lecture-transcript" xmlns="http://www.w3.org/1999/xhtml"> 
     ... 

全市約束看起來是這樣的:

<constraint name="city"> 
    <range type="xs:string" facet="true"> 
     <element ns="" name="city"/> 
     <facet-option>frequency-order</facet-option> 
     <facet-option>descending</facet-option> 
    </range> 
</constraint>" 

我在我的$選項聲明如下聲明:

<searchable-expression> 
    //(formattedTranscript|title|city|state|country|objectDate) 
</searchable-expression> 

當我把這個聲明拿出來,搜索返回結果如預期。我很好奇爲什麼可搜索表達式語句會打破搜索結果。

謝謝大家的意見。

+0

我修復了XML的格式。 (點擊「編輯」查看如何正確格式化代碼。)您可以編輯現有答案,無需發佈新答案。 –

+0

可搜索的表達式不會完全打破搜索結果;它使計數不準確。計數基於未過濾(基本上可能匹配的候選文檔)結果生成,而您看到的實際結果則被過濾,即:檢查以消除誤報。在這種情況下,檢查潛在的匹配是否在可搜索的表達式內是過濾過程的一部分;因此計數太高。如果(比如)文檔中存在多個「城市」,您可能會看到較低的計數;每份文件在估算中只計算一次。 –

+0

您可能會問,爲什麼要將城市和州的元素作爲單個結果返回。作爲結果返回講座還是允許搜索:搜索給你一些有趣的數據片段不是更有意義嗎?它也可以讓你顯示結果作爲講座列表,同時像城市和國家一樣僅僅將元數據作爲講座的元數據細節顯示出來。 – grtjn