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
我正在尝试在 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