Учитывая следующий код:
Dim stemmer As New Lucene.Net.Analysis.PorterStemmer()
Response.Write(stemmer.Stem("mattress table") & "<br />") // Outputs: mattress t
Response.Write(stemmer.Stem("mattress") & "<br />") // Outputs: mattress
Response.Write(stemmer.Stem("table") & "<br />") // Outputs: tabl
Может кто-нибудь объяснить, почему PorterStemmer дает разные результаты, когда в слове есть пробел?Я ожидал, что «таблица матрацев» будет ограничена «матрасом табл».
Кроме того, это еще более сбивает с толку следующий код:
Dim parser As Lucene.Net.QueryParsers.QueryParser = New Lucene.Net.QueryParsers.QueryParser("MyField", New PorterStemmerAnalyzer)
Dim q As Lucene.Net.Search.Query = parser.Parse("mattress table")
Response.Write(q.ToString & "<br />") // Outputs: MyField:mattress MyField: tabl
q = parser.Parse("""mattress table""")
Response.Write(q.ToString & "<br />") // Outputs My Field:"mattress tabl"
Может кто-нибудь объяснить, почему у меня другиерезультаты от QueryParser () и функции Stem () для одного и того же слова с использованием одного и того же анализатора?
Спасибо, Кайл