Ruby on rails 全文搜索中的匹配子字符串不起作用
在我的rails应用程序中,我使用的是solr搜索。子字符串匹配在本地服务器上运行良好,但在我的部署服务器上匹配完整单词 可搜索块Ruby on rails 全文搜索中的匹配子字符串不起作用,ruby-on-rails,ruby,solr,indexing,sunspot-rails,Ruby On Rails,Ruby,Solr,Indexing,Sunspot Rails,在我的rails应用程序中,我使用的是solr搜索。子字符串匹配在本地服务器上运行良好,但在我的部署服务器上匹配完整单词 可搜索块 searchable do text :firstname, :lastname, :login, :mail boolean :member integer :status end schema.xml <fieldType name="text" class="solr.TextField" omitNorms="false"> &
searchable do
text :firstname, :lastname, :login, :mail
boolean :member
integer :status
end
schema.xml
<fieldType name="text" class="solr.TextField" omitNorms="false">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="10" side="front" />
</analyzer>
</fieldType>
我做错了什么?(在这里添加一个答案,告知您可能的不希望的行为)
仅供参考,
当您更改schema.xml
中的“text”字段类型时,您正在更改应用程序中每个索引文本字段的配置。有时不需要这样做,因为某些字段需要自定义配置
例如,让我们假设(无论出于何种原因)您希望将名字与其他文本字段区别对待。假设您想添加名字的同义词。首先在schema.xml
中创建一个名为first\u name的新fieldType
<fieldtype name="first_name" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
</analyzer>
</fieldtype>
注意:dynamicField
名称上的“s”表示它是一种存储类型,为动态字段提供*有助于太阳黑子配置
因此,在searchable
块中,您现在可以执行以下操作:
searchable do
text :firstname, :as => :user_first_name
text :lastname, :login, :mail
boolean :member
integer :status
end
现在将使用自定义配置的“first\u name”
字段
如果您希望first_name是一个存储值(并且您仍然希望使用自定义配置),您可以实现如下可搜索块:
searchable do
text :firstname, :stored => true, :as => :user_first_names
text :lastname, :login, :mail
boolean :member
integer :status
end
两台服务器上的架构是否相同?您是否重新编制了数据索引?是的,两台服务器上的架构是相同的。但不知何故,它并没有重新编制索引。在删除sunspot.yml和solr目录后重新安装sunspot_rails就成功了。感谢您的评论:)
searchable do
text :firstname, :stored => true, :as => :user_first_names
text :lastname, :login, :mail
boolean :member
integer :status
end