EdgeNGramFilterFactory无法正常工作(没有索引?)

时间:2011-04-08 16:32:44

标签: ruby-on-rails solr sunspot

我无法让ngrams工作。这是我的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时,Analysis页面显示EdgenGramFilterFactory确实可用,并导致“Elizabeths”扩展为

  伊丽莎白伊丽莎白伊丽莎白伊丽莎白伊丽莎白

似乎索引器并没有接受这一点。当我将同义词过滤器从查询块移动到索引块时,我遇到了同样的问题。也就是说,当我在查询块中有同义词过滤器时,它可以工作,但是当我把它放在索引块中时,它没有效果。

我重新启动了太阳黑子并重新编制了多次索引。没有骰子。有任何想法吗?如何直接检查索引词列表?

1 个答案:

答案 0 :(得分:2)

我想我发现了问题,看起来像是一个菜鸟错误。

在我的模型中,按照以下教程之一使用以下构造:

class Institution < ActiveRecord::Base
 .
 .
 .
end

Sunspot.setup(Institution) do
  text :name
end

当我开始,停止或重新编制索引时,这似乎没有任何错误。令我感到奇怪的是,我在停止索尔后立即重新索引。

我切换到

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

当我这样做时,我发现在停止Solr之后我无法重新索引。然而,当我开始Solr并重新编制索引时,索引似乎是真的 刷新,我的查询最终表现如预期。