【问题标题】:Jackrabbit - why does search excerpt contain all node properties concatenated?Jackrabbit - 为什么搜索摘录包含连接的所有节点属性?
【发布时间】:2012-01-02 22:17:55
【问题描述】:

当我执行 jackrabbit(版本 2.2.9)搜索并调用 get row.getValue("rep:excerpt()") 时,返回的字符串只是连接的所有属性(不包括 jcr:properties)。我该如何控制?例如。如果我在搜索“foo”时有一个名为“description”的属性包含“bla foo bla”,我希望看到 rep:excerpt() 仅返回部分描述。

我尝试创建一个索引配置(并在测试之间删除了我的存储库)以试图控制哪些属性被索引,但无济于事。

Workspace.xml...

<SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
  <param name="path" value="${wsp.home}/index"/>
  <param name="supportHighlighting" value="true"/>
  <param name="excerptProviderClass" value="org.apache.jackrabbit.core.query.lucene.DefaultHTMLExcerpt"/>
  <param name="indexingConfiguration" value="${wsp.home}/indexing_configuration.xml"/>
</SearchIndex>

indexing_configuration.xml

<?xml version="1.0"?>
<!DOCTYPE configuration SYSTEM "http://jackrabbit.apache.org/dtd/indexing-configuration-1.0.dtd">
<configuration xmlns:nt="http://www.jcp.org/jcr/nt/1.0">
  <index-rule nodeType="nt:teneoNode">
<property>description</property>
<property>input</property>
<property>key</property>
<property>comment</property>
  </index-rule>
</configuration>

谢谢。

泰德。

【问题讨论】:

    标签: lucene highlighting jackrabbit


    【解决方案1】:

    您可以在SearchIndex 文件的SearchIndex 元素中配置负责rep:excerpt() 功能的ExcerptProvider (Javadoc) 实现:

     <param name="excerptProviderClass" value="org.apache.jackrabbit.core.query.lucene.DefaultHTMLExcerpt"/>
    

    您可能需要在自己的实现中插入插件以满足您的特定需求。

    Jackrabbit Wiki 上还有一些 - 不幸的是相当古老 - 信息。

    【讨论】:

    • 谢谢,看到了。希望我可以配置 DefaultHTMLExcerpt 而不必自己编写。
    • 经过一番折腾,我得出的结论是,不值得编写我们自己的 ExcerptProvider,太麻烦了。您必须查找节点,然后通过属性找到与您的搜索词匹配的节点,这应该已经为您完成。内置的东西只适用于查找与您的查询匹配的节点,它没有任何其他信息。对我们来说最好的解决方案是自己实现 Lucene,这样我们就可以优化索引格式并在搜索结果中轻松返回相关信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多