Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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
使用ApacheSolr创建动态方面_Apache_Solr - Fatal编程技术网

使用ApacheSolr创建动态方面

使用ApacheSolr创建动态方面,apache,solr,Apache,Solr,我是apache solr的新手 我已经使用solr cell上传了一些日志文件,我想根据日志文件中的内容创建facet 例如:在我的日志文件中,我有一个事务记录,我想创建transactionid作为我的方面,单击它应该会在上传的日志文件中搜索,并根据特定id给我结果 注意:我需要根据日志中的内容来刻面字段。只要字段被索引,您就可以在其上刻面。因此,您可以使用无模式配置或使用dynamicField定义来匹配并自动创建日志记录的字段 首先浏览Solr示例,应该有足够的信息 (根据评论更新) 如

我是apache solr的新手

我已经使用solr cell上传了一些日志文件,我想根据日志文件中的内容创建facet

例如:在我的日志文件中,我有一个事务记录,我想创建transactionid作为我的方面,单击它应该会在上传的日志文件中搜索,并根据特定id给我结果


注意:我需要根据日志中的内容来刻面字段。

只要字段被索引,您就可以在其上刻面。因此,您可以使用无模式配置或使用dynamicField定义来匹配并自动创建日志记录的字段

首先浏览Solr示例,应该有足够的信息

(根据评论更新) 如果文本需要预处理和拆分,有两种基本途径:

  • 使用DataImportHandler(DIH),可能与和一起将字段拆分为多个字段
  • 使用UpdateRequestProcessor链(在solrconfig.xml中)并可能多次克隆该字段,然后使用提取相关部分。这甚至比DIH更丑陋,因为没有简单的方法将一个领域分成多个领域

  • 不过,特别是对于日志,最好使用这样的内容。

    只要字段被索引,您就可以在其上刻面。因此,您可以使用无模式配置或使用dynamicField定义来匹配并自动创建日志记录的字段

    首先浏览Solr示例,应该有足够的信息

    (根据评论更新) 如果文本需要预处理和拆分,有两种基本途径:

  • 使用DataImportHandler(DIH),可能与和一起将字段拆分为多个字段
  • 使用UpdateRequestProcessor链(在solrconfig.xml中)并可能多次克隆该字段,然后使用提取相关部分。这甚至比DIH更丑陋,因为没有简单的方法将一个领域分成多个领域
  • 不过,特别是对于日志,最好使用类似于.1的内容来回答Alex的问题

    另一种选择是编写一个自定义更新处理器,在这里您可以确定要在哪个字段上刻面,并将该字段显式添加到文档中。 只有在您知道基于某种模式所期望的字段类型时,这才有意义。如果不是这样,那么使用动态字段或无模式配置是最好的选择。

    +1回答Alex的问题

    另一种选择是编写一个自定义更新处理器,在这里您可以确定要在哪个字段上刻面,并将该字段显式添加到文档中。
    只有在您知道基于某种模式所期望的字段类型时,这才有意义。如果不是这样,那么使用动态字段或无模式配置是最好的选择。

    如果我理解正确,您基本上不知道要在哪个字段上刻面,对吗?正如我上载日志文件一样,它应该根据日志文件中的内容(例如transactionid)创建动态刻面如果我理解正确,您基本上不知道要在哪个字段上刻面,对吗?正如我上载日志文件一样,它应该根据日志文件中的内容创建动态刻面(例如transactionid),我尝试索引内容并将其添加为刻面,但这创建了许多不相关的刻面(尽管它是从内容中选取的)我甚至不需要它。你能澄清一下如何做到这一点吗..因为我已经参考了文档,但这对我没有帮助。你必须在日志中识别模式,这是如果有任何开始。一旦你这样做,你可以使用正则表达式来提取相关字段并对它们进行索引。你能引用一个如何使用正则表达式的例子吗o提取相关字段并为其编制索引。如果假设我已识别模式?让我们假设您正在查找以
    事务开始的所有字段的facet。在这种情况下,您将使用如下正则表达式:
    (^transaction.*)
    。这是一个非常简单的示例,实际的正则表达式可能要复杂得多,具体取决于您的用例。您可以使用dynamicField definition with stored=false index=false来匹配您不需要的字段(只要它们具有半一致的名称模式)。它们将进入Solr,然后被有效地丢弃。我尝试为内容编制索引并将其添加为方面,但这会创建许多不相关的方面(尽管它是从内容中选取的)我甚至不需要它。你能澄清一下如何做到这一点吗..因为我已经参考了文档,但这对我没有帮助。你必须在日志中识别模式,这是如果有任何开始。一旦你这样做,你可以使用正则表达式来提取相关字段并对它们进行索引。你能引用一个如何使用正则表达式的例子吗o提取相关字段并为其编制索引。如果假设我已识别模式?让我们假设您正在查找以
    事务开始的所有字段的facet。在这种情况下,您将使用如下正则表达式:
    (^transaction.*)
    。这是一个非常简单的示例,实际的正则表达式可能要复杂得多,具体取决于您的用例。您可以使用dynamicField definition with stored=false index=false来匹配您不需要的字段(只要它们具有半一致的名称模式)我的问题是,如果我有一个文本文件,其中的内容是“2016-02-25 18:05:44821[WebContainer:6]DEBUG[74311F40D97148,用户ID:Inspector 6]-com.apache.org.plm.usersearch.client.UserSearchAPI-{LOG PROPERTIES:ProcessTime:0ms,COMPONENT_NAME:USERSEARCH,TransRefGUID:7431C9280D97148,USER_ID:examicer6,}调用代理………“如果我已经为它编制了索引,那么我只需要将examicer作为我的方面,或者将TransRefGUID作为我的方面。对于这种类型,我们有什么