Lucene.Net搜索带下划线的文本

时间:2012-07-05 10:14:36

标签: lucene 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字段上搜索什么都不返回。

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

干杯

2 个答案:

答案 0 :(得分:0)

所以你可以尝试用solr.KeywordTokenizerFactory进行分析吗?

答案 1 :(得分:0)

实际上现在已经通过创建一个customanalyzer解决了这个问题。但是感谢有关solr tokenizers的信息。如果你想要一个字段保持完整(例如ID字段等)并且不以任何方式改变你只是不进行分析,那么对于关键字标记器的需求还不是很清楚。这本来应该有效,但标准分析师不知何故它没有。 -