2010-03-21 131 views
9

我有一個Lucene索引,它目前區分大小寫。我想添加選項將大小寫不敏感的搜索作爲後退。這意味着符合案例的結果會變得更加重要,並且會首先出現。例如,如果結果數限制爲10,並且有10個符合我的情況的匹配,這就足夠了。如果我只找到7個結果,我可以從不區分大小寫的搜索中再添加3個結果。Lucene區分大小寫和不敏感搜索

我的情況實際上更復雜,因爲我有不同重量的物品。理想情況下,與「錯誤」情況匹配會增加一些重量。不用說,我不想要重複的結果。

一種可能的方法是有2個索引。一個與案件和一個沒有和搜索兩者。當然,這裏有一些冗餘,因爲我需要索引兩次。

有沒有更好的解決方案?想法?

+0

你試過copyField嗎?請參閱http://wiki.apache.org/solr/SchemaXml – Karussell 2010-03-21 16:14:54

回答

6

你已經試過copyField了嗎?看到http://wiki.apache.org/solr/SchemaXml#Copy_Fields

如果不通過copyField具有不同配置定義了一個新的領域B和複製領域的分爲B

+3

那麼,copyField是一個Solr功能,我使用的是裸露的Lucene。然而,我可以用小寫字母來添加一個帶有相同索引文本的額外字段。這比創建完全獨立的索引要好得多,所以+1。 – zvikico 2010-03-21 17:07:45

+0

ups,好的。我有完全相同的問題,但正在與solr合作。儘管我加了這個答案有點太快了。 – Karussell 2010-03-21 17:29:50

+0

我已經開始和額外的領域運行,所以你的回答給了我一個正確的方向推動。這就是我需要的。再次感謝。我會保持開放,看看我能否獲得更高效的解決方案。 – zvikico 2010-03-21 17:49:52

5

Lucene搜索是區分大小寫的, 它只是所有的輸入通常 下套管,在經過 Queryparser後,所以感覺就像是 不區分大小寫。換句話說, 不會小寫您在 索引之前的輸入,也不會小寫您的 查詢(例如,選擇一個分析儀,其中 不會小寫)關鍵字分析器 例如。

[setLowercaseExpandedTerms][1](boolean lowercaseExpandedTerms) 

可以索引使用大小寫敏感的分析的術語和當u想不區分大小寫的查詢中使用它亙古不變的轉換一類的術語來小寫

看看通配符,前綴和模糊查詢

+0

自然而然,使用小心謹慎的分析器和較低的關懷查詢將不會產生正確的結果。 – zvikico 2010-03-22 17:45:28

+0

你可以用sqlite或mysql做同樣的事嗎? – Naveen 2011-04-10 22:31:36

+1

@Naveen:sqlite和mysql有fullblown數據庫引擎,你的問題是什麼? – Narayan 2011-04-11 05:32:59

相關問題