簡體   English   中英

為什么在Lucene.Net中,過濾器無法處理文本/字符串值?

[英]Why is filter not working with text/string values in Lucene.Net?

我在Lucene.Net中進行了篩選,以限制搜索結果。 我遇到一個非常奇怪的問題。 篩選器不適用於“文本值”,但適用於數字值。

例如:

如果我使用數字值進行過濾,如下所示。 運行良好。

String field = "id";
Filter LE= new QueryWrapperFilter(new TermQuery( new Term(field, "1234567")));
indexSearcher.Search(QueryMaker(searchString, searchfields), LE, coll);

但是,如果我給出一個包含Text的值

String field = "id";
Filter LE = new QueryWrapperFilter(new TermQuery(new Term(field, "ZZZOCB9X9Y")));
indexSearcher.Search(QueryMaker(searchString, searchfields), LE, coll);

它失敗了。 結果不顯示任何記錄。

有人可以向我解釋這個問題。 另外,我對此進行了無數次測試以得出這一結論。 我已經在一些論壇上閱讀到,Lucene 3以下版本的術語查詢可能會出現此問題。 但是,我將版本更改為3.0.3,但錯誤仍然存​​在。 我非常需要程序中的過濾器才能工作。 否則,我將不得不離開Lucene並找到其他東西。

StandardAnalyzer將小寫TokenStream所有字符。

嘗試這個:

Filter LE = new QueryWrapperFilter(new TermQuery(new Term(field, "ZZZOCB9X9Y".ToLowerInvariant())));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM