Ruby on rails 全文搜索中的匹配子字符串不起作用

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"> &

在我的rails应用程序中,我使用的是solr搜索。子字符串匹配在本地服务器上运行良好,但在我的部署服务器上匹配完整单词

可搜索块

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