如何配置Solr以生成包含最常用单词的结果集

时间:2012-03-18 23:55:35

标签: ruby-on-rails solr

我正在为我的应用程序创建文章搜索功能。我正在寻找类似于Stackoverflow的问题创建建议的搜索功能,当您创建新问题时,它会在标题文本框下方弹出。

搜索字符串:

"the dog waker"

数据库行:

"The best you can do"
"Love to your pet"
"Selina the dog walker"
"How to teach your dog to be healthy" 
"Teach your dog tricks"

我希望输入中的每个单词对结果集产生影响,如果找不到输入单词,则不会过滤掉我正在搜索的数据集。

我想得到这个结果集:

"Selina the dog walker" - 从输入“waker”中搜索“dog”并模糊搜索“walker” "How to teach your dog to be healthy" - 有“狗”字 "Teach your dog tricks" - 有“狗”字

我已使用以下内容修改了schema.xml,但它似乎无法正常工作。除非我拥有所有单词,否则它会过滤掉所有内容。

<analyzer>
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.StopFilterFactory"/>     -->    
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front"/>
</analyzer>

2 个答案:

答案 0 :(得分:1)

不确定你想在这里做什么,但我会删除EdgeNGramFilterFactory,如果你想添加一些模糊性,你可以添加PhoneticFilter或使用Lucene语法〜

答案 1 :(得分:0)

不确定:

<filter class="solr.StopFilterFactory"/>

(顺便说一句,你知道你在这一行的末尾有一个结束的XML评论)

另一方面,我知道在Solr 4上,以下工作:

<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt " enablePositionIncrements="true"/> 

我认为你不需要:

<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front"/>

最后,“爱你的宠物”不应该出现在结果中,你确认了吗?