SOLR中的默认英语词汇

时间:2015-01-07 13:37:42

标签: solr stemming

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

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

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

例如:

字段值(索引)和字段值(查询)我输入值:行走。 PorterStemFilter部分中的文本字段等于“walk”,如我所愿。

但是当我在查询部分查询行走时,它匹配 0值!我想让它匹配所有的价值观(步行,散步,散步) 查询网址:http://localhost:8983/solr/collection1/select?q=*walking*&wt=json&indent=true

修改

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

编辑#2

非常感谢你。现在一切都很清楚。我将解释今天我不喜欢的东西,也许它会对某人有用。

如果你的网址是这样的

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"/>

如果要阻止特定字段而不是“文本”,则必须在url中指定它。例如字段“name”:

http://localhost:8983/solr/collection1/select?q=name:walking&wt=json&indent=true
还有一点不要忘记。要阻止的字段属性“indexed”必须设置为“true”。 谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

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

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