2012-07-05 139 views
0

我使用的standardanalyzer並添加我想用下面的代碼搜索的字段Lucene.Net搜索用下劃線

   doc.Add(
        new Field(
         "BookId", 
         book.CatalogueBookNo.ToString(), 
         Field.Store.YES, 
         Field.Index.NOT_ANALYZED, 
         Field.TermVector.NO)); 

       doc.Add(
        new Field("Title", 
         strTitle, 
         Field.Store.YES, 
         Field.Index.ANALYZED, 
         Field.TermVector.NO)); 

       doc.Add(
        new Field("Author", 
         strAuthor, 
         Field.Store.YES, 
         Field.Index.ANALYZED, 
         Field.TermVector.NO)); 

       doc.Add(
        new Field("IssueId_fk", 
         book.IssueId_fk, 
         Field.Store.YES, 
         Field.Index.NOT_ANALYZED, 
         Field.TermVector.NO)); 

所有字段是搜索除了IssueId_Fk場(這是沒有分析和文本因此完整) - 此字段包含格式爲「11_12_4」,「11_12_3」等字符串值。

我已打開記事本中的lucene索引,並且可以確認值是用分隔符IssueId_Fk字段不會返回任何內容。

任何人都知道如何解決這個問題?

乾杯

回答

0

其實現在已經通過創建customanalyzer解決了這個問題。不過謝謝關於solr tokenizer的信息。對於關鍵詞標記器的需求有點不太清楚 - 如果你想讓一個字段保持完整(比如說ID字段等),而不是以任何方式改變,你就不要分析它。這應該已經奏效,但標準分析人員不知怎麼的沒有。 -

0

這樣,可以嘗試用solr.KeywordTokenizerFactory分析?

+0

上述評論不正確「將其設置爲Field.Index.NOT_ANALYZED意味着它將無法搜索」。一個字段可以被搜索而不需要分析。如果一個字段沒有被分析,這意味着不同的單詞形式,接近匹配等不是由應用任何標記器產生的。 – wingyip 2012-10-01 11:49:47

+0

實際上現在通過創建一個customanalyzer來解決這個問題。不過謝謝關於solr tokenizer的信息。對於關鍵詞標記器的需求有點不太清楚 - 如果你想讓一個字段保持完整(比如說ID字段等),而不是以任何方式改變,你就不要分析它。這應該已經奏效,但標準分析人員不知怎麼的沒有。 – wingyip 2012-10-02 12:44:16