【问题标题】:MarkLogic Search Suggest with Java API使用 Java API 的 MarkLogic 搜索建议
【发布时间】:2017-02-09 17:45:25
【问题描述】:

我正在尝试为我正在构建的应用程序实施搜索建议。我尝试按照指南found here

我修改了一些东西以使用我的数据库。我的选项现在看起来像这样:

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>;

名称“content”是我要搜​​索的 XML 元素的名称,以及我不确定的命名空间,所以我只是复制了数据库中已有的默认范围索引中的命名空间。

我的索引如下所示:

我的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);

将选项名称设置为我添加的建议 def 的行,因为它不在教程中。 搜索每次都返回一个空集。是因为我的命名空间吗?还是我错过了什么? FWIW 我尝试使用显示的命名空间和空白命名空间运行它。

编辑:示例文档:

<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 文档
  • 添加了示例文档。现在我看一下,是我在“内容”元素而不是“价值”元素上搜索的问题吗?编辑:Nvm,将“内容”更改为“价值”,但仍然没有
  • 听起来您确实有命名空间问题,即使您的示例文档没有显示任何命名空间。请记住确保在选项和范围索引中都有一个空白命名空间。您可以通过在 QConsole 中运行以下 Javascript 直接针对范围索引进行测试:cts.elementValueMatch(xs.QName("value"), "*")
  • 您是否尝试将 'content' 更改为 'value' 并摆脱命名空间?
  • 我会将 java 层从其中全部取出,并使用 search:suggest() 和您的选项在查询控制台中进行测试。一旦所有的调整和工作,然后担心 inetgration。

标签: java marklogic marklogic-8


【解决方案1】:

有效! Sam Mefford 关于在控制台中运行的评论让我意识到它实际上会返回结果,而不是我的搜索字符串。我在搜索文本周围添加了一些通配符,它​​现在可以工作了;在调整我的索引和选项以搜索正确的 XML 元素并将命名空间留空之后。

【讨论】:

  • 找到答案后,请将其标记为“已接受”,以便其他人知道该问题已得到解决。
  • 明天才让我接受,但我会尽快做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-01
  • 1970-01-01
  • 2022-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多