我在rails应用程序上工作,这是基于Apache Solr搜索引擎,我们正在使用Sunspot gem。但我面临着一个问题,如果我用and query搜索查询house rent,它会给我成千上万的结果。但是我得到的结果是不相关的。
我期待的文件,其中包含的房子和租赁字彼此接近,这些文件应该是最重要的。但就目前而言,包含更多房屋和租赁文件的文件是最重要的。但是没有任何接近这个词。
我的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>要实现这一点,需要做哪些改变?或者任何需要添加的过滤器?
发布于 2015-06-10 22:20:19
你可以试试这个
<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-26 16:49:49
使用短语字段并提升它们,或者你可以尝试像"house rent"~5这样的术语提升
https://stackoverflow.com/questions/30754491
复制相似问题