【问题标题】:Solr : stemming in a live cluster (reindexing issues)Solr :在实时集群中提取(重新索引问题)
【发布时间】:2015-06-13 07:12:30
【问题描述】:

我有一个未启用词干提取的实时 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

谢谢

【问题讨论】:

  • 您能否发布您正在使用的 Solr 版本、您正在执行的查询以及您获得的 debugQuery 输出?
  • 您是否在 Solr Admin UI Analyzer 中验证了词干提取?

标签: solr solr4 solrcloud


【解决方案1】:

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

无论如何,谢谢大家!

【讨论】:

    猜你喜欢
    • 2014-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-06
    • 2011-10-24
    • 2012-05-20
    • 1970-01-01
    相关资源
    最近更新 更多