0

私のsolrインストールは、完全な単語ではなく、単語のスタブのみを提案します。

Conductor を検索すると、次のような結果が得られます。

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

私がしたいことは次のとおりです。

  • 交響曲ではなく交響曲
  • ガラガラの代わりにガラガラ(指揮者のサイモン・ラトル)

等々。

生成された完全なクエリは次のとおりです。

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

4

2 に答える 2

1

スキーマには2つのフィールドタイプしかなく、どちらもSnowballPorterFilterFactoryでステミングを実行しています。ステミングを行わないコピーフィールドを使用して、ステミングされた単語の代わりに完全な単語を取得するためにそのフィールドを使用できます。

于 2013-02-21T18:38:39.237 に答える
1

arun は正しいです。この問題は、インデックス アナライザーによってステミングされているフィールドのファセットを取得しているためです。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 を作成することをお勧めします。

于 2013-02-21T19:11:38.387 に答える