给定以下代码:
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() 函数中得到不同的结果吗?
谢谢,凯尔