我无法让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”扩展为
伊丽莎白伊丽莎白伊丽莎白伊丽莎白伊丽莎白
似乎索引器并没有接受这一点。当我将同义词过滤器从查询块移动到索引块时,我遇到了同样的问题。也就是说,当我在查询块中有同义词过滤器时,它可以工作,但是当我把它放在索引块中时,它没有效果。
我重新启动了太阳黑子并重新编制了多次索引。没有骰子。有任何想法吗?如何直接检查索引词列表?
答案 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并重新编制索引时,索引似乎是真的 刷新,我的查询最终表现如预期。