我有一个问题,其中solr不会在完全导入期间清除索引。

所有服务器运行solr 3.4,配置为vanilla,因为它可以。

我在我们的开发环境中尝试过这个,并在我自己的计算机上的实例上,并收到了类似的结果。

模式相当简单,这些是突出点:

<schema name="System" version="1.4">
...
  </types>
    <fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true" />
    <fieldType name="long" class="solr.TrieLongField" precisionStep="0" omitNorms="true" positionIncrementGap="0" />
    <fieldType name="date" class="solr.TrieDateField" omitNorms="true" precisionStep="0" positionIncrementGap="0" />
    <fieldType name="documentKey" class="solr.TextField">
      <analyzer type="index"> 
        <tokenizer class="solr.KeywordTokenizerFactory"/> 
      </analyzer> 
      <analyzer type="query"> 
        <tokenizer class="solr.KeywordTokenizerFactory"/> 
      </analyzer> 
    </fieldType>
  </types>
  <fields>
    <field name="document_id" type="documentKey" indexed="true" stored="true" required="true" />
    <field name="entity_id" type="long" indexed="true" stored="true" required="true" />
    <field name="name" type="string" indexed="true" stored="true" required="true" />
    <field name="entity_type" type="string" indexed="true" stored="true" required="false" />
    <field name="Timestamp" type="date" indexed="true" stored="true" default="NOW" multiValued="false"/>
  </fields>
</schema>
.

注意: - Document_ID字段在用于填充索引的实际视图中计算,并且是此索引中不在此索引中的其他字段的组合,但是intity_id的凹陷。这是独一无二的。 - Entity_ID字段是几个表的键,对于相同的Document_ID,它可以在刷新和另一个刷新之间疯狂地更改。

在完全刷新之前,如果我询问索引:

http://localhost:8080/qq-solr/system/select/?rows=10&q=document_id:%22French_Polynesia/Huahine~4034376%22
.

我得到:

<?xml version="1.0" encoding="UTF-8"?>
  <response>
    <lst name="responseHeader">
      <int name="status">0</int>
      <int name="QTime">5</int>
      <lst name="params">
        <str name="indent">true</str>
        <str name="q">document_id:"French_Polynesia/Huahine~4034376"</str>
        <str name="rows">10</str>
      </lst>
    </lst>
  <result name="response" numFound="1" start="0">
    <doc>
      <date name="Timestamp">2012-03-08T09:47:26.335Z</date>
      <str name="document_id">French_Polynesia/Huahine~4034376</str>
      <long name="entity_id">22902728</long>
      <str name="name">Huahine</str>
      <str name="type">LOCATION</str>
    </doc>
  </result>
</response>
.

然后我刷新:

http://localhost:8080/qq-solr/system/dataimport?command=full-import&clean=true&commit=true&optimize=true
.

(我知道干净,提交,优化是冗余的,但我用它们只是为了确保,以后一段时间我收到一切都是a-OK的消息。

然后我再次查询索引:

http://localhost:8080/qq-solr/system/select/?rows=10&q=document_id:%22French_Polynesia/Huahine~4034376%22
.

,我得到:

<?xml version="1.0" encoding="UTF-8"?>
  <response>
    <lst name="responseHeader">
      <int name="status">0</int>
      <int name="QTime">5</int>
      <lst name="params">
        <str name="indent">true</str>
        <str name="q">document_id:"French_Polynesia/Huahine~4034376"</str>
        <str name="rows">10</str>
      </lst>
    </lst>
  <result name="response" numFound="1" start="0">
    <doc>
      <date name="Timestamp">2012-03-09T08:31:07.317Z</date>
      <str name="document_id">French_Polynesia/Huahine~4034376</str>
      <long name="entity_id">22902728</long>
      <str name="name">Huahine</str>
      <str name="type">LOCATION</str>
    </doc>
  </result>
</response>
.

但在数据库中,Entity_ID是不同的!

我看到时间戳已经更新,因此触摸了记录,但为什么旧的值被保留?

有帮助吗?

解决方案

我会通过交互式开发模式您可以确保您的数据库查询正在检索您期待的Entity_ID。因为SOLR条目上的时间戳正在更新,所以您的DIH进程正在运行,但我猜测这一个原因在于数据正在检索的方式。

其他提示

随时我用solr做这样的操作,我总是使用curl手动清除索引100%肯定它的擦拭。以下是一个教程: http://www.alphadevx.com/A / 365清除-A-SOLR-SEARM-INDEX

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top