Параметр нефильтрованного поиска не возвращает точных результатов

В Marklogic мне нужно выполнять нефильтрованный поиск, чтобы получить результаты по фасетам. Но этот параметр возвращает неточные результаты, в которых отсутствует выделение поиска.
Я использовал выражение с возможностью поиска, чтобы получить Путь результатов поиска, вот параметры, которые я использовал:

<search-option>unfiltered</search-option>

<searchable-expression>
    /Book//chapter 
</searchable-expression>

<constraint name="chapter">
    <word> 
        <element name="chapter"/>
    </word> 
</constraint> 

<constraint name="Author">
    <range type="xs:string" collation="http://marklogic.com/collation/codepoint">
        <element name="author"/>
    </range>
</constraint> </options>

Also, I tried to add element query constraint, but it affect the performance of the search query This is the search query:

search:search("chapter:List of Scenes", $options);

person Kindle Q    schedule 01.07.2015    source источник
comment
Где, по-вашему, нужно выполнять поиск без фильтров, чтобы получить фасеты? Я никогда об этом не слышал и не могу найти в документации.   -  person DALDEI    schedule 01.07.2015
comment
Когда я меняю параметр «Нефильтрованное» на «Отфильтрованное», а затем пытался получить фасет с помощью search: search. Он вернет нулевые результаты. Например, search: search (глава: Список сцен И Автор: Шекспир, $ options); ... этот запрос вернет нулевой результат.   -  person Kindle Q    schedule 01.07.2015
comment
Вы ищете фразу «Список сцен» в элементе главы? Если да, то я думаю, что ваш поиск должен быть search:search('chapter:"List of Scenes"', $options);. В противном случае вы выполняете ограничение главы с помощью List плюс отдельные запросы слов с of и Scenes.   -  person Dave Cassel    schedule 01.07.2015
comment
Фасеты подсчитывают либо количество документов со значением словаря (обычно значение в индексе диапазона), либо количество вхождений значения словаря. Ограничивающий запрос для фасета выполняется без фильтрации, поскольку поиск по словарю полностью зависит от индексов. В частности, фасет не подсчитывает узлы, динамически выбираемые выражением с возможностью поиска. В таком случае, каковы грани и что они должны учитывать?   -  person ehennum    schedule 01.07.2015
comment
@ehennum В моем случае фасетом является фасет Автор, и он должен подсчитывать количество глав   -  person Kindle Q    schedule 02.07.2015
comment
@DaveCassel да, я ищу список сцен в элементе главы, поэтому я определяю ограничение главы в параметрах, и он отлично работал со мной, пока я не перешел к фасетам, результаты фасета возвращают ноль, если опции отфильтрованы.   -  person Kindle Q    schedule 02.07.2015
comment
Для подсчета глав каждая глава должна быть в отдельном документе или в отдельном фрагменте фрагментированного документа. Здесь описаны фрагменты docs.marklogic.com/guide/admin/fragments, но где возможно, обычно лучше использовать отдельные документы и при необходимости собрать книгу.   -  person ehennum    schedule 02.07.2015
comment
@ehennum Я не предпочитаю фрагментацию документов базы данных. Одно из решений, о котором я думал, - сделать динамическое выражение с возможностью поиска. После тестирования это работа! .. поэтому я меняю путь для выражения с возможностью поиска на ‹searchable-expression› if ($ facet) then (/ Book) else (Book // chapter) ‹/searchable-expression›   -  person Kindle Q    schedule 06.07.2015


Ответы (1)


(ТАК истекло время). Если вы не получаете фасеты с фильтруемым поиском, это потому, что поиск не создал фасетов. Нефильтрованный поиск может создавать фасеты в тексте, который не соответствовал поиску, но находился в том же документе, что и соответствующий проиндексированный термин. Нефильтрованные поисковые запросы не заменяют отфильтрованные поисковые запросы. Если поиск с фильтрами выполняется слишком медленно, вам следует проанализировать свои запросы и данные, чтобы найти подходящие варианты оптимизации. Часто используется компромисс: оптимизируйте несколько поисковых запросов, чтобы они были быстрыми, а затем используйте их результаты для выполнения второго отфильтрованного поиска по подмножеству результатов по мере необходимости, чтобы заполнить детали. См. https://docs.marklogic.com/guide/performance.

person DALDEI    schedule 01.07.2015
comment
Поиск производит фасеты в зависимости от элемента Book, а не от элемента главы, который я ищу в выражении с возможностью поиска. Итак, решения для этого: во-первых, фрагментация для базы данных или, во-вторых, сделать это выражение динамическим, чтобы получить фасетные результаты. - person Kindle Q; 06.07.2015