Lucene.Net搜索用下划线

问题描述:

我使用的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字段不会返回任何内容。

任何人都知道如何解决这个问题?

干杯

其实现在已经通过创建customanalyzer解决了这个问题。不过谢谢关于solr tokenizer的信息。对于关键词标记器的需求有点不太清楚 - 如果你想让一个字段保持完整(比如说ID字段等),而不是以任何方式改变,你就不要分析它。这应该已经奏效,但标准分析人员不知怎么的没有。 -

这样,可以尝试用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