2013-03-13 49 views
0

我正在設計一個包含每個文檔排名標籤的Lucene搜索索引。Solr/Lucene:爲單個標籤評分

實施例:

Document 1 
tag: java , rank 1.2 
tag: learning, rank 2.1 
tag: bugs, rank 1.2 
tag: architecture: rank 0.3 

的標籤來自一個自動分類算法,該算法也將一個得分指定。

如何設計索引,以便查詢搜索標籤組合並返回最相關的結果?例如,搜索java +學習

我最初爲每個標記創建了一個FIELD,並使用排名來提升每個文檔的字段。在性能方面這是一個很好的方法嗎?如果我有10,000個可能的標籤會怎麼樣?在Lucene中有10,000個FIELDS是個好主意嗎?

Field tag = new Field(
     FIELD_TAG+tag.getId(), 
     "y", 
     Field.Store.NO, 
     Field.Index.NOT_ANALYZED); 

tag.setBoost(tag.getRank()); 

luceneDoc.add(tag); 

如果我將所有標籤添加到相同的字段,我該如何考慮排名?

回答

0

我在我搜索這個問題太......告訴我,如果我錯了......

好了,如果你能有一個像場「標籤」包含值「Java學習中的錯誤架構「和你使用WhiteSpaceTokenizer:

http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.WhitespaceTokenizerFactory

但是這樣做,你不能每次博斯特的話,你可以提高現場‘標籤’......

這樣做的Lucene不會當用戶搜索f時給出一個好評分或「java bugs」或「java中的體系結構」,但會返回包含此詞的所有文檔。

但是你可以像你說的那樣做很多「標籤」並提升每一個......或者你可以創建一個新的查詢解析器http://today.java.net/pub/a/today/2003/11/07/QueryParserRules.html繼承edismax(例如)使一個字段按照你的想法工作。

這就是你想要的嗎?

呃...還有一件事,增加很多字段將使文檔索引緩慢和索引更大(可能不好搜索)。

相關問題