2017-02-09 16 views
0

Я пытаюсь внедрить поисковое предложение для приложения, которое я создаю. Я пробовал следовать руководству 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 выглядит следующим образом: range element 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 
+1

добавьте образец XML-документа, который вы ожидаете дать от –

+0

. Добавлен образец документа. Теперь, когда я смотрю на него, проблема заключается в том, что im ищет элемент «content» вместо элемента «value»? Редактировать: Nvm, изменил 'content' на 'value' и все еще ничего –

+1

Уверен, похоже, что у вас проблема с пространством имен, даже если ваш документ Sample не показывает пространства имен. Не забудьте убедиться, что у вас есть пустое пространство имен как в параметрах, так и в Index Range. Вы можете напрямую протестировать индекс диапазона, запустив следующий Javascript в QConsole: 'cts.elementValueMatch (xs.QName (" value ")," * ")' –

ответ

1

Это работает! Комментарий Сэма Меффорда о запуске в консоли заставил меня понять, что это действительно приведет к результатам, только не для моей строки поиска. Я бросил несколько подстановочных знаков вокруг текста поиска, и теперь он работает; после настройки моего индекса и параметров для поиска нужного элемента XML и оставления пространства имен пустым.

+0

Поскольку вы нашли ответ, отметьте это как «Принято», чтобы другие знали, что вопрос был рассмотрен. –

+1

Это не позволит мне принять его до завтра, но я сделаю это, как только смогу. –

 Смежные вопросы

  • Нет связанных вопросов^_^