SOLR 中的默认英语词干

Default english stemming in SOLR

我正在尝试在 SOLR 中提取简单的英语单词,但由于某些原因我没有成功。

我的 xml 文档如下所示:

<add><doc>
  <str name="id">1</str>
  <str name="name">walked</str>
</doc>
<doc>
  <str name="id">2</str>
  <str name="name">walking</str>
</doc>
<doc>
  <str name="id">3</str>
  <str name="name">walks</str>
</doc>
</add>

在架构 XML 中,我将名称类型更改为 "text_en"

<field name="name" type="text_en" indexed="true" stored="true"/>

我没有改变任何其他东西,我认为它应该可以工作(我尝试了一切:根据各种教程等为他们创建新字段和新字段类型,但是出了点问题,我不知道是什么)

如果我尝试在 SOLR 的分析部分中分析这些词,还有一点 (http://localhost:8983/solr/#/collection1/analysis) 它工作正常。

例如:

Field Value(index) and Field Value(query) 我输入值:walking。 PorterStemFilter 部分中的文本字段如我所愿等于 "walk"。

但是当我在查询部分进行查询时,它匹配 0 个值!我希望它匹配所有值(步行、步行、步行) 查询 url: http://localhost:8983/solr/collection1/select?q=*walking*&wt=json&indent=true

编辑

P.S。我重新索引了很多次,这不是问题。

编辑#2

非常感谢。现在一切都清楚了。我将解释我今天不明白的地方,也许对某人有用。

如果你的url是这样的

http://localhost:8983/solr/collection1/select?q=walking&wt=json&indent=true

您正在使用字段:"text"(默认字段是文本),因为查询中没有指定字段。

 <field name="text" type="text_en" indexed="true" stored="false" multiValued="true"/>

如果您想要词干特定字段而不是 "text",您必须在 url 中指定它。例如字段 "name":

http://localhost:8983/solr/collection1/select?q=name:walking&wt=json&indent=true

还有一点不要忘记。您要阻止的字段属性 "indexed" 必须设置为 "true"。 感谢您的帮助!

您的查询看起来不正确,请尝试这样查询:

http://localhost:8983/solr/collection1/select?q=name:walking&wt=json&indent=true