2012-03-18 59 views
2

我正在爲我的應用程序創建文章搜索功能。我正在尋找類似於創建新問題時在標題文本框下彈出的Stackoverflow的問題創建建議的搜索功能。如何配置Solr以生成最常用單詞的結果集

搜索字符串:

"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" - 有「狗」模糊搜索「行者」從輸入「之杖」
"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> 
+0

不確定你想要做什麼,你希望被忽略的行出現在結果中? – 2012-03-19 13:53:43

+0

我想獲得結果集,因爲這三行中有「狗」,而「Selina the dog walker」有「walker」。我想忽略其他兩個,因爲他們沒有我在輸入搜索字符串中的任何單詞 – EverTheLearner 2012-03-19 18:36:20

回答

1

不知道你要在這裏做什麼,但我會刪除EdgeNGramFilterFactory,如果你想添加一些fuzzyness,你可以添加一個PhoneticFilter或使用Lucene的語法〜

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

最後,「愛你的寵物」不應該在結果中顯示,你確認?