我使用的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字段不會返回任何內容。
任何人都知道如何解決這個問題?
乾杯
永
上述評論不正確「將其設置爲Field.Index.NOT_ANALYZED意味着它將無法搜索」。一個字段可以被搜索而不需要分析。如果一個字段沒有被分析,這意味着不同的單詞形式,接近匹配等不是由應用任何標記器產生的。 – wingyip 2012-10-01 11:49:47
實際上現在通過創建一個customanalyzer來解決這個問題。不過謝謝關於solr tokenizer的信息。對於關鍵詞標記器的需求有點不太清楚 - 如果你想讓一個字段保持完整(比如說ID字段等),而不是以任何方式改變,你就不要分析它。這應該已經奏效,但標準分析人員不知怎麼的沒有。 – wingyip 2012-10-02 12:44:16