【问题标题】:How to configure SOLR for stemming如何配置 SOLR 进行词干提取
【发布时间】:2015-09-01 13:47:03
【问题描述】:

我正在学习 solr 并使用 solr-5.3.0。我想在 solr 中包含常见的词干分析器。我关注了这个Tutorial。但是在我搜索一个术语时对 schema.xml 进行更改后,我没有得到想要的输出。另外,schema.xml 有很多,我不确定要编辑哪一个。

{
"responseHeader": {
    "status": 0,
    "QTime": 1,
    "params": {
        "indent": "true",
        "q": "HOLIDAY",
        "_": "1441115332479",
        "wt": "json"
    }
},
"response": {
    "numFound": 2,
    "start": 0,
    "docs": [
        {
            "id": "1234",
            "name": [
                "A lovely winter holiday"
            ],
            "_version_": 1511117845476409300
        },
        {
            "id": "1235",
            "name": [
                "A lovely summer holiday"
            ],
            "_version_": 1511118023312801800
        }
    ]
  }
}

当我搜索holidays 时,它没有给出任何结果。我在schema.xml 中添加了这个。

<fieldType name="text" class="solr.TextField" omitNorms="false">
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" tokenizerFactory="solr.StandardTokenizerFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>

【问题讨论】:

  • 您的核心使用了哪种配置...?
  • 我在核心管理中添加了一个名为 new_core 的核心。我没有指定任何其他有关配置的内容。
  • 我是 solr 的新手。今天才开始。
  • 您的索引文本中是否包含“假期”一词..?因为如果我在 solr 分析工具中尝试了它并且它得到了匹配...我认为“PorterStemFilterFactory”是导致问题的原因,但似乎并非如此..
  • 架构更改后 - 您确实重新创建了索引,对吗?因为您几乎总是需要在更改架构时将其丢弃并创建新的。

标签: solr solrj stemming


【解决方案1】:

试试下面的 fieldType ....

<fieldType name="text" class="solr.TextField" omitNorms="false">
    <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StandardFilterFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
    <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StandardFilterFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" tokenizerFactory="solr.StandardTokenizerFactory"/>
    </analyzer>
    </fieldType>

【讨论】:

  • 我需要在 schema.xml 中编辑这些更改吗?但是,有很多 schema.xml 文件。此外,在创建核心时,当我尝试为 schema.xml 提供不同的名称时,什么也没有创建。
  • 不,我认为您不需要对架构文件进行任何更改...我认为您的 fieldType 不正确。所以我删除了“PorterStemFilterFactory”。但我在 solr 分析工具中尝试使用 PorterStemFilterFactory,似乎 fieldType 很好。我的问题是你用过solr分析工具吗?
  • 不,我没有使用 solr 分析工具。我正在从Query 查询
  • PorterStemFilterFactory 有助于从单词中删除常见的结尾...例如可爱到爱...。您在索引和查询中使用了相同的结尾。所以我看不出有什么问题
  • 通过访问localhost:8983/solr...if尝试分析工具,您已经创建了核心localhost:8983/solr/core_name
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-20
  • 1970-01-01
  • 2015-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多