Я пытаюсь внедрить поисковое предложение для приложения, которое я создаю. Я пробовал следовать руководству found here.MarkLogic Search Предложить с 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 Я хочу, чтобы искать, и пространство имен я не был уверен, так что я просто скопировал пространство имен, которое было в индексы диапазона по умолчанию уже в моей базе данных.
My Index выглядит следующим образом:
Мой 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);
Заходящее название опции на предложение линии Защиту я добавил, как это было не в учебнике. Поиск возвращает пустой набор каждый раз. Это из-за моего пространства имен? Или я чего-то не хватает? FWIW Я попытался запустить его с указанным пространством имен и с пустым пространством имен.
Edit: Образец документа:
<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-документа, который вы ожидаете дать от –
. Добавлен образец документа. Теперь, когда я смотрю на него, проблема заключается в том, что im ищет элемент «content» вместо элемента «value»? Редактировать: Nvm, изменил 'content' на 'value' и все еще ничего –
Уверен, похоже, что у вас проблема с пространством имен, даже если ваш документ Sample не показывает пространства имен. Не забудьте убедиться, что у вас есть пустое пространство имен как в параметрах, так и в Index Range. Вы можете напрямую протестировать индекс диапазона, запустив следующий Javascript в QConsole: 'cts.elementValueMatch (xs.QName (" value ")," * ")' –