我正在嘗試爲我正在構建的應用實施搜索建議。我試着按照指南found here。MarkLogic搜索使用Java API建議
我修改了一些東西來處理我的數據庫。我選擇現在這個樣子:
String options =
<options xmlns="http://marklogic.com/appservices/search">
<default-suggestion-source>
<range type="xs:string" facet="true">" +
<element ns="http://marklogic.com/xdmp/dls" name="content"/>
</range>
</default-suggestion-source>
</options>;
命名爲「內容」是我想要搜索的XML元素的名稱,命名空間我不知道,所以我只是複製,這是在命名空間默認範圍索引已經在我的數據庫中。
我的Java代碼如下:
StringHandle handle = new StringHandle(options);
QueryManager queryManager = client.newQueryManager();
QueryOptionsManager optMgr = client.newServerConfigManager().newQueryOptionsManager();
optMgr.writeOptions("opt-suggest", handle);
SuggestDefinition suggestionDef = queryManager.newSuggestDefinition();
suggestionDef.setLimit(10);
suggestionDef.setStringCriteria(text);
suggestionDef.setOptionsName("opt-suggest");
String[] suggestions = queryManager.suggest(suggestionDef);
行選項的名稱設置爲建議DEF我說,因爲它在本教程不是。 搜索每次都會返回一個空集。是因爲我的名字空間嗎?或者我錯過了什麼? FWIW我試着用名字空間和空白名字空間來運行它。
編輯:樣品文件:
<Article doctype="article>
<title>Some Name here</title>
<content>
<content type="paragraph">
<value>Some text</value>
</content>
<content type="paragraph">
<value>More text</value>
</content>
</content>
</Article
請添加一個示例XML文檔,您希望從 –
提供建議添加了示例文檔。現在我看看它,是在搜索「內容」元素而不是「價值」元素的問題? 編輯:Nvm,將'content'更改爲'value',但仍然沒有任何內容 –
儘管您的Sample文檔沒有顯示任何命名空間,但確實聽起來您有名稱空間問題。請記住確保在選項和範圍索引中都有空白的名稱空間。你可以通過在QConsole中運行以下Javascript來直接測試範圍索引:'cts.elementValueMatch(xs.QName(「value」),「*」)' –