Solr:源于实时集群(重建索引问题)

时间:2015-06-03 21:42:09

标签: solr solr4 solrcloud

我有一个实时的Solr集群,其中未启用词干,我的schema.xml如下所示:

..
<field name="Searchable_Text" type="text_general" indexed="true" stored="true" multiValued="false"/> 
..
<field name="text" type="text_general" indexed="true" stored="false" multiValued="true"/>
..
<copyField source="Searchable_Text" dest="text" maxChars="3000"/>
..
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
        <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
    <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
</fieldType>
..

这些是我在现场群集中启用词干的步骤

将schema.xml更改为在索引中包含词干:

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.PorterStemFilterFactory"/>
    </analyzer>
    <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
</fieldType>

我在solrconfig中禁用了opensearcher:

<autoCommit> 
   <maxTime>${solr.autoCommit.maxTime:60000}</maxTime> 
   <openSearcher>false</openSearcher>  <!-- was set to true earlier-->
</autoCommit>

然后我重新编制了我的整个数据索引。我的假设是数据已提交,但由于opensearcher设置为false,因此新索引的数据不可见。

在此之后,我更改了schema.xml以在查询中包含词干并更改了solrconfig.xml以将opensearcher设置为true:

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.PorterStemFilterFactory"/>
    </analyzer>
    <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.PorterStemFilterFactory"/>
    </analyzer>
</fieldType>

<autoCommit> 
   <maxTime>${solr.autoCommit.maxTime:60000}</maxTime> 
   <openSearcher>true</openSearcher>  <!-- was set to true earlier-->
</autoCommit>
然后我重新加载了核心。但我仍然没有看到我的疑问。 debugQuery检查似乎没有在查询中显示出来。这很奇怪。我的方法有什么问题吗?

我正在使用Solr 4.7

由于

1 个答案:

答案 0 :(得分:0)

嗯,我做了一些愚蠢的事,因为事情没有用。上面的步骤肯定对我有用,除了当我重新加载核心时,我使用LB VIP而不是每个单独的机器(!)。这样做解决了我的问题。

无论如何,谢谢大家!