2011-04-13 124 views
3

我想要使用Lucene.Net製作Proximity Search。我看到this question看起來像是他的答案,但沒有代碼被提供。 Java文檔說要使用〜字符和中間的字數,但我沒有看到這個字符在代碼中的位置。任何人都可以給我一個使用Lucene.Net進行接近搜索的例子嗎?Proximity搜索示例Lucene.Net

編輯:

我到目前爲止有:

IndexSearcher searcher = new IndexSearcher(this.Directory, true); 

string[] fieldList = new string[] { "Name", "Description" }; 

List<BooleanClause.Occur> occurs = new List<BooleanClause.Occur>(); 
foreach (string field in fieldList) 
{ 
    occurs.Add(BooleanClause.Occur.SHOULD); 
} 


Query searchQuery = MultiFieldQueryParser.Parse(this.LuceneVersion, query, fieldList, occurs.ToArray(), this.Analyzer); 

如果我嘗試添加「〜」與任意數量的MultiFieldQueryParser它的錯誤了說了FuzzySearch值應該在0.0到1.0之間,但是我想要一個接近搜索3個分開的單詞Ex。 「我的搜索」〜3

+0

除非我失去了一些東西,〜字符直接進入查詢的文本(如在您鏈接到的文檔)。 – Odrade 2011-04-13 00:42:28

+0

@Orade請看我對這個問題所做的修改。我嘗試過,但解析器認爲我試圖做一個FuzzySearch。 – FelixMM 2011-04-13 00:47:48

+0

對不起,我沒有對Lucene的.NET任何實際的專業知識。我只是覺得你可能會錯過文檔中的一些明顯的東西。不過,它看起來並不那樣。 – Odrade 2011-04-13 16:41:30

回答

8

代字號意味着如果將其應用於單個字詞,則表示fuzzy search,如果將其應用於短語,則表示proximity search。您收到聽起來像是你將它放在一個單一期限(短期〜10),而不是使用一個短語(「一詞術語」〜10)的錯誤。

要做到接近搜索中使用的波浪線,「〜」符號在短語結束。

1

Lucene.NET和相同版本的經典java lucene之間的唯一區別應該是內部的而不是外部的 - 操作目標是有一個非常兼容的項目,特別是在輸入(查詢)和輸出(索引文件)端。所以它應該工作,但它適用於java lucene。如果沒有,這是一個錯誤。

+0

難道你對我怎麼可能實現接近搜索一些代碼的例子嗎?我沒有使用和Java Lucene也不Lucene.Nat之前提供的文檔不是很大,對於Lucene.Net至少 – FelixMM 2011-04-14 12:35:50