2013-06-24 4 views
0

Я делаю search:search в базе данных MarkLogic. Я могу выполнить поиск по термину «pineal» и вернуть результаты 297 с фрагментами. Я могу выполнить поиск по «city: Vancouver» и вернуть 83 результата с помощью фрагментов. Запрос "pinal ИЛИ города: Ванкувер" возвращает 374 результатов со сниппетами. Тем не менее, запрос «pinal AND city: Vancouver» возвращает количество результатов 6, но не содержит никаких элементов результата и никаких фрагментов. Любая идея, почему я не получаю текст результата?MarkLogic поиск: поиск не возвращающихся фрагментов

Спасибо! Ravi Har

+0

Можете ли вы предоставить образец XML, который вы ожидаете от запроса? – mblakele

+0

Кроме того, как определено ограничение «city:»? –

ответ

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 для вас. (Нажмите «edit», чтобы увидеть, как правильно форматировать код.) Вы можете просто редактировать свои существующие ответы, не нужно публиковать новые. –

+0

Выражаемое для поиска выражение не нарушает результаты поиска; это делает счет неточным. Счет генерируется на основе нефильтрованных (в основном, коротких документов, которые могут совпадать), тогда как фактические результаты, которые вы видите, фильтруются, т.е. чтобы удалить ложные срабатывания. В этом случае проверка того, что потенциальные совпадения находятся в пределах выражения, подлежащего поиску, является частью процесса фильтрации; поэтому счет слишком высок. Вы также можете видеть низкие значения, если (скажем) в документе более одного «города»; каждый документ подсчитывается только один раз в оценке. –

+0

Вы можете спросить, зачем возвращать элементы, такие как город и государство, как отдельные результаты. Разве не имеет смысла просто возвращать лекцию в качестве результатов и разрешить поиск: поиск, чтобы дать вам фрагменты интересных бит? Это также позволит вам показывать результаты в виде списка лекций, показывая такие вещи, как город и государство, как простые метаданные о лекциях, как они есть. – grtjn