solr不建议完整的单词

时间:2013-02-21 17:53:19

标签: solr autosuggest

我的solr安装只提示单词的存根,而不是完整的单词。

如果我搜索指挥,我会得到这样的结果:

<int name="conductor">68</int>
<int name="symphoni">51</int>
<int name="no.">46</int>
<int name="rattl">28</int> 

我希望拥有的是:

  • symphonic而不是syphoni
  • 拨浪鼓(Simon Rattle,指挥)而不是rattl

等等。

完整生成的查询是:

select?fl=abstract&facet=true&facet.field=abstract&facetlimit=8&facet.mincount=1&omitHeader=true&qf=content%5E40.0+title%5E5.0+keywords%5E2.0+tagsH1%5E5.0+tagsH2H3%5E3.0+tagsH4H5H6%5E2.0+tagsInline&json.nl=map&q=conductor&start=0&rows=5

我使用TYPO3,所以可以在这里找到配置xml:

https://github.com/subugoe/typo3-solr/blob/master/resources/solr/typo3cores/conf/solrconfig.xml

可以在这里找到架构:

https://github.com/subugoe/typo3-solr/blob/master/resources/solr/typo3cores/conf/english/schema.xml

2 个答案:

答案 0 :(得分:1)

您的架构中只有两种字段类型,并且两者都使用SnowballPorterFilterFactory进行干预。您可以使用copy field,它不会阻止并使用该字段来获取完整的单词而不是词干。

答案 1 :(得分:1)

arun是正确的,这个问题是因为您正在检索由索引分析器阻止的字段的facet。我查看了TYPO3提供的其他fieldType定义,textSpell fieldType看起来很有希望。

我建议将以下内容添加到general_schema_fields.xml文件中。

 <field name="abstract_facet" type="textSpell" indexed="true" stored="true" />
 <copyfield source="abstract" dest="abstract_facet" />

您需要重新索引数据才能使这些更改生效,然后您可以运行以下查询,以便为您提供更好的结果。

 select?fl=abstract&facet=true&facet.field=abstract_facet&facetlimit=8&facet.mincount=1
  &omitHeader=true&qf=content%5E40.0+title%5E5.0+keywords%5E2.0+tagsH1%5E5.0
  +tagsH2H3%5E3.0+tagsH4H5H6%5E2.0+tagsInline
  &json.nl=map&q=conductor&start=0&rows=5

如果这不能完全满足您的需求,我建议您查看Solr Wiki - Analyzers, Tokenizers and Token Filters以获取有关如何处理和存储在索引中的值的更多指导。最终,您可能希望创建一个完全独立的fieldType以用于分面。