0

standardanalyzerを使用して、検索するフィールドを次のコードで追加しています

                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フィールドを検索しても何も返されません。

誰もがこれを回避する方法を知っていますか?

乾杯

4

2 に答える 2

0

solr.KeywordTokenizerFactoryで分析してみてください。

于 2012-07-05T11:23:20.107 に答える
0

実際には、customanalyzerを作成することでこれを解決しました。ただし、solrトークナイザーに関する情報に感謝します。ただし、キーワードトークナイザーの必要性については明確ではありません。フィールドをそのまま残し(IDフィールドなど)、変更しないようにしたい場合は、分析しないでください。これは機能するはずでしたが、standardanalyserでは機能しませんでした。–

于 2013-02-28T11:28:22.167 に答える