Я выполняю КТСА: поиск с «нефильтрованные» вариант и подстановочный поиск включены (означает прохождение «безразличный»).караты: поиск возвращает неожиданные результаты для нефильтрованной опции поиска, когда подстановочный включен
В моей базе данных, я вставил 5 xml документов, которые я вставил ниже.
В приведенных ниже каратах: запрос, если значение journalTitle элемента содержит символа (*) это возвращающееся мне все 5 документов.
, например: "D *", "ди *", "Dixi *"
Даже если я передаю "Мохи * T" в качестве значения для journalTitle элемента, я получаю все пять документов в результате.
Для "отфильтрованный" вариант работает нормально.
Мне любопытно, почему это поведение? и, пожалуйста, также дайте мне знать, как я могу исправить это для «нефильтрованный» вариант.
Я много искал в Google относительно этого, но не нашел решение.
Вы найдете ниже каратов: поиск запросов и XML-файлы
КТС: запрос
cts:search(fn:collection(), cts:element-query(
xs:QName("root"),
cts:and-query(
(
cts:element-value-query(xs:QName("sourceType"), "JA", ("case-insensitive","diacritic-sensitive","punctuation-sensitive","whitespace-sensitive","wildcarded","lang=en"), 1),
cts:element-value-query(xs:QName("journalTitle"), "mohi*t", ("case-insensitive","diacritic-sensitive","punctuation-sensitive","whitespace-sensitive","wildcarded","lang=en"), 1),
cts:element-value-query(xs:QName("title"), "title1", ("case-insensitive","diacritic-sensitive","punctuation-sensitive","whitespace-sensitive","wildcarded","lang=en"), 1),
cts:element-value-query(xs:QName("volume"), "volume0", ("case-insensitive","diacritic-sensitive","punctuation-sensitive","whitespace-sensitive","wildcarded","lang=en"), 1)
),
()
),
()
),"unfiltered")
содержание XML - вставили все пять XMLs:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<journalTitle>Dinesh</journalTitle>
<sourceType>JA</sourceType>
<title>title1</title>
<volume>volume0</volume>
</root>
-
<?xml version="1.0" encoding="UTF-8"?>
<root>
<journalTitle>Dixit</journalTitle>
<sourceType>JA</sourceType>
<title>title1</title>
<volume>volume0</volume>
</root>
-
<?xml version="1.0" encoding="UTF-8"?>
<root>
<journalTitle>Prashant</journalTitle>
<sourceType>JA</sourceType>
<title>title1</title>
<volume>volume0</volume>
</root>
-
<?xml version="1.0" encoding="UTF-8"?>
<root>
<journalTitle>GAYARI</journalTitle>
<sourceType>JA</sourceType>
<title>title1</title>
<volume>volume0</volume>
</root>
-
<?xml version="1.0" encoding="UTF-8"?>
<root>
<journalTitle>KEVAL</journalTitle>
<sourceType>JA</sourceType>
<title>title1</title>
<volume>volume0</volume>
</root>
Вы может потребоваться результат xdmp: plan, поэтому я вставил его ниже
xdmp: результат плана:
<qry:query-plan xmlns:qry="http://marklogic.com/cts/query">
<qry:info-trace>xdmp:eval("xdmp:plan(cts:search(fn:collection(), cts:element-query(&#10; ...",(), <options xmlns="xdmp:eval"><database>12874763000056740838</database><root>C:\RSuite\modules...</options>)</qry:info-trace>
<qry:info-trace>Analyzing path for search: fn:collection()</qry:info-trace>
<qry:info-trace>Step 1 is searchable: fn:collection()</qry:info-trace>
<qry:info-trace>Path is fully searchable.</qry:info-trace>
<qry:info-trace>Gathering constraints.</qry:info-trace>
<qry:info-trace>Search query contributed 1 constraint: cts:element-query(fn:QName("", "root"), cts:and-query((cts:element-value-query(fn:QName("", "sourceType"), "JA", ("case-insensitive","diacritic-sensitive","punctuation-sensitive","whitespace-sensitive","wildcarded","lang=en"), 1), cts:element-value-query(fn:QName("", "journalTitle"), "mohi*t", ("case-insensitive","diacritic-sensitive","punctuation-sensitive","whitespace-sensitive","wildcarded","lang=en"), 1), cts:element-value-query(fn:QName("", "title"), "title1", ("case-insensitive","diacritic-sensitive","punctuation-sensitive","whitespace-sensitive","wildcarded","lang=en"), 1), cts:element-value-query(fn:QName("", "volume"), "volume0", ("case-insensitive","diacritic-sensitive","punctuation-sensitive","whitespace-sensitive","wildcarded","lang=en"), 1)),()),())</qry:info-trace>
<qry:partial-plan>
<qry:or-two-queries>
<qry:element-query>
<qry:key>10866465315185201428</qry:key>
<qry:annotation>element(root)</qry:annotation>
<qry:and-query>
<qry:term-query weight="1">
<qry:key>15329831187071590131</qry:key>
<qry:annotation>element(sourceType,value("JA"))</qry:annotation>
</qry:term-query>
<qry:term-query weight="0">
<qry:key>3029765743981997321</qry:key>
<qry:annotation>element(journalTitle)</qry:annotation>
</qry:term-query>
<qry:term-query weight="1">
<qry:key>4206353216190327061</qry:key>
<qry:annotation>element(title,value("title1"))</qry:annotation>
</qry:term-query>
<qry:term-query weight="1">
<qry:key>7729558342335907080</qry:key>
<qry:annotation>element(volume,value("volume0"))</qry:annotation>
</qry:term-query>
</qry:and-query>
</qry:element-query>
<qry:and-two-queries>
<qry:term-query weight="0">
<qry:key>837267169796541076</qry:key>
<qry:annotation>link-child(descendant(element(root)))</qry:annotation>
</qry:term-query>
<qry:and-query>
<qry:term-query weight="1">
<qry:key>15329831187071590131</qry:key>
<qry:annotation>element(sourceType,value("JA"))</qry:annotation>
</qry:term-query>
<qry:term-query weight="0">
<qry:key>3029765743981997321</qry:key>
<qry:annotation>element(journalTitle)</qry:annotation>
</qry:term-query>
<qry:term-query weight="1">
<qry:key>4206353216190327061</qry:key>
<qry:annotation>element(title,value("title1"))</qry:annotation>
</qry:term-query>
<qry:term-query weight="1">
<qry:key>7729558342335907080</qry:key>
<qry:annotation>element(volume,value("volume0"))</qry:annotation>
</qry:term-query>
</qry:and-query>
</qry:and-two-queries>
</qry:or-two-queries>
</qry:partial-plan>
<qry:info-trace>Executing search.</qry:info-trace>
<qry:final-plan>
<qry:and-query>
<qry:or-two-queries>
<qry:element-query>
<qry:key>10866465315185201428</qry:key>
<qry:annotation>element(root)</qry:annotation>
<qry:and-query>
<qry:term-query weight="1">
<qry:key>15329831187071590131</qry:key>
<qry:annotation>element(sourceType,value("JA"))</qry:annotation>
</qry:term-query>
<qry:term-query weight="0">
<qry:key>3029765743981997321</qry:key>
<qry:annotation>element(journalTitle)</qry:annotation>
</qry:term-query>
<qry:term-query weight="1">
<qry:key>4206353216190327061</qry:key>
<qry:annotation>element(title,value("title1"))</qry:annotation>
</qry:term-query>
<qry:term-query weight="1">
<qry:key>7729558342335907080</qry:key>
<qry:annotation>element(volume,value("volume0"))</qry:annotation>
</qry:term-query>
</qry:and-query>
</qry:element-query>
<qry:and-two-queries>
<qry:term-query weight="0">
<qry:key>837267169796541076</qry:key>
<qry:annotation>link-child(descendant(element(root)))</qry:annotation>
</qry:term-query>
<qry:and-query>
<qry:term-query weight="1">
<qry:key>15329831187071590131</qry:key>
<qry:annotation>element(sourceType,value("JA"))</qry:annotation>
</qry:term-query>
<qry:term-query weight="0">
<qry:key>3029765743981997321</qry:key>
<qry:annotation>element(journalTitle)</qry:annotation>
</qry:term-query>
<qry:term-query weight="1">
<qry:key>4206353216190327061</qry:key>
<qry:annotation>element(title,value("title1"))</qry:annotation>
</qry:term-query>
<qry:term-query weight="1">
<qry:key>7729558342335907080</qry:key>
<qry:annotation>element(volume,value("volume0"))</qry:annotation>
</qry:term-query>
</qry:and-query>
</qry:and-two-queries>
</qry:or-two-queries>
</qry:and-query>
</qry:final-plan>
<qry:info-trace>Selected 5 fragments</qry:info-trace>
<qry:result estimate="5"/>
</qry:query-plan>
Извинение, если есть какая-либо ошибка gramatical.
Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.
Существуют параметры индекса, позволяющие осуществлять поиск по одному или двум символам. Однако для поддержки этого требуется несколько больших индексов, поэтому клиентам предлагается рассмотреть, могут ли они быть довольны трехсимволами. Подробнее читайте в разделе [Общие сведения о индексах подстановочных знаков] (http://docs.marklogic.com/guide/search-dev/wildcard#id_61884). –