solr 添加索引

2019-03-27 01:04|来源: 网路

添加索引模板:

<add>
  <doc>
    <field name="employeeId">05991</field>
    <field name="office">Bridgewater</field>
    <field name="skills">Perl</field>
    <field name="skills">Java</field>
  </doc>
  [<doc> ... </doc>[<doc> ... </doc>]]
</add>

 <add overwrite="true" commitWithin="1000">属性

  • overwrite = "true" | "false" — 默认是 "true", 当主键存在时是否覆盖。

  • commitWithin = "(milliseconds)" 当这个属性存在时,索引将会在指定的毫秒后更新

<doc>属性

  boost = <float> —默认是1.0,solr是根据评分来确定文档的相关度的,通过该设置可以人为提高分数,最终评分将是score*boost。

<field>属性

  • update = "add" | "set" | "inc" — 可以设置当前字段时 添加呢?还是更新呢?

  • boost = <float> — default is 1.0 (See SolrRelevancyFAQ)

    •  跟<doc>属性的boost一样,人为提供该字段分值(solr是先计算字段的得分,再计算整个文档的得分)

 

下面是一些简单的实例:

添加带boost属性的文档

  • <add>
      <doc boost="2.5">
        <field name="employeeId">05991</field>
        <field name="office" boost="2.0">Bridgewater</field>
      </doc>
    </add>

     

添加<field>节点带update属性的文档

  • <add>
      <doc>
        <field name="employeeId">05991</field>
        <field name="office" update="set">Walla Walla</field>
        <field name="skills" update="add">Python</field>
      </doc>
    </add>

     

添加<field>节点为多值,带update属性的文档

  • <add>
      <doc>
        <field name="employeeId">05991</field>
        <field name="skills" update="set">Python</field>
        <field name="skills" update="set">Java</field>
        <field name="skills" update="set">Jython</field>
      </doc>
    </add>

     

设置一个<field>值为null

  • <add>
      <doc>
        <field name="employeeId">05991</field>
        <field name="skills" update="set" null="true" />
      </doc>
    </add>

     

 

     


    转自:http://www.cnblogs.com/shaocan/p/3504002

    相关问答

    更多
    • 当您将文档索引到solr时,它将使用相同的 (通常是id)覆盖任何现有的文档。 所以是的,它覆盖了现有的数据。 如果您想更改单个文档的字段,则必须重新索引整个文档,因为solr不支持仅更新字段。 所以,当你删除一个字段时,你将不得不重新索引没有字段的文档。 这将覆盖现有的数据。 不要忘记在最后发送commit 。 使用Solr 4,您可以更新文档的单个字段。 请参阅Atomic_Updates When you index a document to solr, it will ov ...
    • 如果要查找索引的物理磁盘大小,可以按照solrconfig.xml中的定义查看“dataDir”下的“data / index”文件夹。 例如。 在示例索引中,它是example / solr / data / index文件夹。 如果您正在查找文档的数量,那么您可以查看stats.jsp页面或搜索“ : ”。 如果您正在寻找了解内存使用情况,可以从stats.jsp开始 - 并查看文档计数,各种字段缓存大小等。 我担心你需要做更多的研究来了解你的记忆要求,描述应用程序和计划容量。 If you are l ...
    • 这些DB服务器的用途不同,它在很大程度上取决于您的应用程序(以及您存储的数据类型)是否应该仅使用Solr或MySQL。 MySQL可以很好地存储具有大量关系和表格的数据(彼此相关的表格)。 Solr很适合文本搜索(正如你所说:快速索引),如果你没有很多“相关数据”,你确实可以将这些数据存储在相同的文档中。 有些人确实只使用Solr来存储他们的数据库...但我仍然认为RDBM可以很好地用于某些类型的数据。 例如:如果您想允许快速搜索系统用户并存储他们的完整个人资料,以及一些信息详细信息......最好使用So ...
    • 我想你想刷新索引的原因是因为你想要近实时搜索。 实质上,您希望搜索即时反映添加的文档。 在solr中,通常由softCommits或hardCommit通过openSearcher = true进行控制。 在这里阅读更多 https://lucidworks.com/2013/08/23/understanding-transaction-logs-softcommit-and-commit-in-sorlcloud/ 要点是这个 硬承诺是关于耐久性,软承诺是关于可见性 现在,如果我明白你所做的这一切都是为 ...
    • 您在每个查询中都给出了参数rows=2147483647 。 该参数的含义是(取自参考文献) 您可以使用rows参数对查询中的结果进行分页。 该参数指定Solr应一次返回客户端的完整结果集中的最大文档数。 默认值为10.也就是说,默认情况下,Solr一次返回10个文档以响应查询。 因此,您告诉Solr生效,在单个响应中发送查询的所有匹配。 这是你糟糕表现的原因。 当查询“java”时 ,谷歌是否会向您发送所有500.000.000次匹配,不会。 为什么不,性能。 我知道的每一个IR应用程序都会为您提供一个带 ...
    • 是的,可以将已爬网数据索引到Solr。 我以前做过这个。 您需要创建一个实现IPipelineStep的自定义管道步骤,并将其添加到您的NCrawler实现中。 我使用SolrNet作为连接Solr的客户端。 这里有一些代码可以帮助您入门。 SolrNet.Startup.Init("http://localhost:8983/solr"); using(Crawler c = new Crawler("http://ncrawler.codeplex.com/", n ...
    • 只是一个疯狂的猜测 - 你的内容领域的大小(单词数量)是什么? 因为,现在你已经将NGramFilterFactory放入你的过滤器链并且minGramSize为3,那么很多令牌都将被生成,并且全部位于新的位置。 solrconfig.xml中的maxFieldLength设置限制了要编入索引的令牌数量。 默认值为10000(仍然很高),但可以在过滤器链中使用大内容和ngramfilter时被超过。 10000 尝试将此值增加到较高的数字, ...
    • 这里有一篇很好的文章将帮助您完成PHP和SOLR的集成: http://www.ibm.com/developerworks/opensource/library/os-php-apachesolr/ SOLR有许多PHP接口,该文章引用了PHP SOLR客户端: http://code.google.com/p/solr-php-client/ 但也有这个: http://pecl.php.net/package/solr There's a good article here that will hel ...
    • git忽略: */data/* */dataimport.properties 例如: solr/development/data/* solr/development/conf/dataimport.properties dataimport.proporties包含最后一个索引时间和其他动态变量 #Thu Nov 17 16:21:03 GMT 2016 last_index_time=2016-11-17 16\:21\:03 development.last_index_time=2016- ...