Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Solr Alfresco:如何在Alfresco共享中搜索链接(类型为app:filelink或cm:link的节点)?_Solr_Alfresco - Fatal编程技术网

Solr Alfresco:如何在Alfresco共享中搜索链接(类型为app:filelink或cm:link的节点)?

Solr Alfresco:如何在Alfresco共享中搜索链接(类型为app:filelink或cm:link的节点)?,solr,alfresco,Solr,Alfresco,我在Alfresco 4.0.2上,希望能够搜索类型为cm:content以及的节点,如cm:link或app:filelink 当我直接查看Solr索引时,我看到所有类型都在那里被索引。但当我在Alfresco Share中搜索时,链接(类型为cm:link或app:filelink的节点)不会返回,即使搜索词位于它们的cm:name属性中,与它的cm:content等价。我在节点浏览器中对此进行了检查 cm:content和cm:link都将cm:cmobject作为其父对象,并且将cm:n

我在Alfresco 4.0.2上,希望能够搜索类型为cm:content以及的节点,如cm:link或app:filelink

当我直接查看Solr索引时,我看到所有类型都在那里被索引。但当我在Alfresco Share中搜索时,链接(类型为cm:link或app:filelink的节点)不会返回,即使搜索词位于它们的cm:name属性中,与它的cm:content等价。我在节点浏览器中对此进行了检查

cm:content和cm:link都将cm:cmobject作为其父对象,并且将cm:name属性设置为索引,这在Solr中起作用

因此,在Solr和返回给客户机的响应之间的某个地方,我假设Alfresco正在进行一些过滤和排除链接。我试图找到相关的代码,但尚未成功

我查看了search.lib.js(/webapps/alfresco/WEB-INF/classes/alfresco/templates/webscripts/org/alfresco/slingshot/search/search.lib.js),找到了一个我认为可能相关的点,对其进行了更改(参见下面的注释行)并重新加载了WEB脚本,但它仍然没有达到我期待的结果。仍然只显示cm:content和cm:folder类型

  // ensure a TYPE is specified - if no add one to remove system objects from result sets
  if (ftsQuery.indexOf("TYPE:\"") === -1 && ftsQuery.indexOf("TYPE:'") === -1)
  {
     //ftsQuery += ' AND (+TYPE:"cm:content" +TYPE:"cm:folder")';
     ftsQuery += ' AND (+TYPE:"cm:content" +TYPE:"cm:folder" +TYPE:"cm:link" +TYPE:"app:filelink")';
  }
Alfresco在哪里过滤某些搜索结果,例如特定类型

更新:

当我通过Javascript控制台按名称搜索时,所有类型都包含在搜索结果中(在我的例子中,有三个结果)。这是我也希望通过定期共享站点搜索来实现的结果。
突出显示的结果是常规Alfresco共享搜索结果中未显示的节点。

我找到了相关代码部分:

它确实在search.lib.js中,但在处理链的另一个方法
getDocumentItem
中,结果通过

  if (node.isContainer || node.isDocument)
我调整了部分,现在它可以工作了。当然,下面的核心js库中的这种攻击只是为了测试,应该以某种方式在核心之外重写该函数

/**
 * Returns an item of the document library component.
 */
function getDocumentItem(siteId, containerId, pathParts, node)
{

   // PENDING: how to handle comments? the document should
   //          be returned instead

   // check whether we already processed this document
   if (checkProcessedCache("" + node.nodeRef.toString()))
   {
      return null;
   }

   // check whether this is a valid folder or a file
   var item = t = null;
   if (node.qnamePath.indexOf(COMMENT_QNAMEPATH) == -1 &&
       !(node.qnamePath.match(DISCUSSION_QNAMEPATH+"$") == DISCUSSION_QNAMEPATH))
   {
      if (true || node.isContainer || node.isDocument)
      {
         item =
         {
            site: getSiteData(siteId),
            container: containerId,
            nodeRef: node.nodeRef.toString(),
            tags: ((t = node.tags) !== null) ? t : [],
            name: node.name,
            displayName: node.name,
            title: node.properties["cm:title"],
            description: node.properties["cm:description"],
            modifiedOn: node.properties["cm:modified"],
            modifiedByUser: node.properties["cm:modifier"],
            createdOn: node.properties["cm:created"],
            createdByUser: node.properties["cm:creator"],
            path: pathParts.join("/")
         };
         item.modifiedBy = getPersonDisplayName(item.modifiedByUser);
         item.createdBy = getPersonDisplayName(item.createdByUser);
      }
      if (node.isContainer)
      {
         item.type = "folder";
         item.size = -1;
      }
      else if (node.isDocument)
      {
         item.type = "document";
         item.size = node.size;
      } else {
         // added MLN
         item.type = "document";
         item.size = 1;
      }
   }

   return item;
}

在Alfresco 5中,可以在
/Alfresco/templates/webscripts/org/Alfresco/slingshot/search/
下的
WEB-INF/lib/Alfresco-remote-api-5.0.1.jar中找到