重视包含near + solr + sunspot这个词的文档

时间:2015-06-10 11:06:22

标签: ruby-on-rails solr sunspot-solr solr-schema

我正在开发rails应用程序,它基于Apache Solr搜索引擎,我们使用的是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>

要实现这一目标,需要做哪些改变?或者为此添加任何过滤器?

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

使用词组字段并提升它们,或者您可以尝试像"house rent"~5

这样的词语提升