1

ngramを機能させるのに問題があります。これが私のschema.xmlです:

<fieldType name="text" class="solr.TextField" omitNorms="false">
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StandardFilterFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="25" />

  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StandardFilterFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" />
  </analyzer>
</fieldType>

私のデータベースにはたくさんのエントリがあります

「エリザベス」

「エリザベス」

「エリザベス」でクエリを実行しようとすると、「エリザベス」ではなく「エリザベス」のみが表示されます。奇妙なことに、solr adminをチェックアウトすると、分析ページにEdgenGramFilterFactoryが実際に使用可能であることが示され、「Elizabeths」がに展開されます。

e el eli eliz eliza elizab elizabe elizabet elizabeth

インデクサーはこれを理解していないようです。同義語フィルターをクエリブロックからインデックスブロックに移動したときにも同じ問題が発生します。つまり、クエリブロックに同義語フィルターがある場合は機能しますが、インデックスブロックに入れると効果がありません。

Sunspotを再起動し、インデックスを複数回再作成しました。サイコロはありません。何か案は?インデックス付きの単語リストを直接確認するにはどうすればよいですか?

4

1 に答える 1

2

私は問題を見つけたと思います、そしてそれはnoobエラーのように見えます。

私のモデルでは、チュートリアルの1つに従って次の構成を使用していました。

class Institution < ActiveRecord::Base
 .
 .
 .
end

Sunspot.setup(Institution) do
  text :name
end

これは、開始、停止、またはインデックスの再作成時にエラーをスローしなかったようです。Solrを停止した直後にインデックスを再作成できたのは不思議なことでした。

に切り替えました

class Institution < ActiveRecord::Base
  .
  .
  .
  searchable do
    text :name
  end
endH

これを行ったとき、Solrを停止した後にインデックスを再作成できないことがわかりました。ただし、Solrを起動してインデックスを再作成すると、インデックスが本当に更新されたように見え、クエリは最終的に期待どおりに動作しました。

于 2011-04-09T01:53:04.547 に答える