2014-04-08 91 views
0

我有與領域「GuidId」字段和「guidid」索引的文件。我怎樣才能讓lucene網絡忽略這種情況......以便以下查詢不論情況如何搜索?是否有可能使lucene.net忽略查詢字段的情況?

TermQuery termQuery = new TermQuery(new Term("GuidId", guidId.ToString())); 

我不想爲字段爲「guidid」..i.e的文檔編寫另一個查詢。小寫字母

回答

1

理想情況下,不要有帶時髦情況的字段名稱。如果您正在動態定義字段名稱或某些類型名稱,則應在將它們添加到索引之前將它們小寫。完成之後,應該很容易將查詢字段的名稱保持爲小寫,並且狀態良好。

如果無論出於何種原因,您都遇到了這種區分大小寫的數據,那麼您將被禁止擴展您的查詢以搜索字段名稱的所有已知排列,以獲取所有結果。喜歡的東西:

Query finalQuery = new DisjunctionMaxQuery(0) 
finalQuery.add(new TermQuery(new Term("GuidId", guidId.ToString()))); 
finalQuery.add(new TermQuery(new Term("guidid", guidId.ToString()))); 

DisjunctionMaxQuery可能會在這裏一個不錯的選擇,因爲它只返回最大的得分命中之中是查詢集合,而不是在多次點擊可能複合分數。

您也可以使用MultiFieldQueryParser來達到類似的效果。我不相信它使用DisjunctionMax,但它聽起來不像是在這種情況下可能是一筆大交易。

相關問題