0

我正在开发基于 Apache Solr 搜索引擎的 Rails 应用程序,我们正在使用 Sunspot gem。但是我面临一个问题,如果我搜索查询,house rent那么它会通过使用and query. 但是我得到的结果并不相关。

我期待包含彼此靠近的房屋和租金单词的文件,这些文件应该排在最前面。但目前包含更多房屋和租金文件的文件排在首位。但是没有任何词接近。

我的 schema.xml 包含以下定义:

<fieldType name="text" class="solr.TextField" omitNorms="false">
  <analyzer>
    <tokenizer class="solr.PatternTokenizerFactory" pattern="[\s,\.;\(\)]+"/>
    <filter class="solr.StandardFilterFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
    <charFilter class="solr.HTMLStripCharFilterFactory"/>
    <filter class="solr.PorterStemFilterFactory"/>
  </analyzer>
</fieldType>

为了实现这一点,需要做哪些改变?还是需要为此添加任何过滤器?

4

2 回答 2

0

你可以试试这个

<fieldType name="shingleString" class="solr.TextField" positionIncrementGap="100" omitNorms="true">
      <analyzer type="index">
        <tokenizer class="solr.KeywordTokenizerFactory"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.ShingleFilterFactory" outputUnigrams="true" outputUnigramIfNoNgram="true" maxShingleSize="99"/>
        <filter class="solr.PositionFilterFactory" />
      </analyzer>
    </fieldType>
于 2015-06-10T14:20:19.303 回答
0

使用短语字段并增强它们,或者您可以尝试增强术语,例如"house rent"~5

于 2015-06-26T08:49:48.733 回答