搜索javascript代码中不包含复数的数据库

搜索javascript代码中不包含复数的数据库,javascript,database,logic,linguistics,Javascript,Database,Logic,Linguistics,我有一个程序,我给它一个名词,它用一个名词表检查它的数据库,看看那个名词是否在那里。 这适用于单数名词。 如。 用户键入“什么是树?” 程序搜索“树” 但对于“什么是树?” 程序将搜索“树”,但是数据库只存储单数形式的名词,因此不会找到。 我在考虑在我做搜索之前把最后的s去掉。 例如 然而,对于不是以“s”结尾的复数名词,这是行不通的 例如: 巨龙、剑龙、耶稣、弥撒、贝斯、物理学和其他很多 我可以把不是复数的以s结尾的单词列成一个列表,然后首先搜索它是否在该列表中,如果是,请不要删掉最后一个“s

我有一个程序,我给它一个名词,它用一个名词表检查它的数据库,看看那个名词是否在那里。 这适用于单数名词。 如。 用户键入“什么是树?” 程序搜索“树”

但对于“什么是树?”

程序将搜索“树”,但是数据库只存储单数形式的名词,因此不会找到。 我在考虑在我做搜索之前把最后的s去掉。 例如

然而,对于不是以“s”结尾的复数名词,这是行不通的 例如: 巨龙、剑龙、耶稣、弥撒、贝斯、物理学和其他很多

我可以把不是复数的以s结尾的单词列成一个列表,然后首先搜索它是否在该列表中,如果是,请不要删掉最后一个“s”,否则就删掉

我会对以“es”结尾的词做类似的处理,除非它们在以“es”结尾的非复数词列表中


有更好的方法吗

唯一的方法是创建一个规则和单词的数据库,它不会是完美的。如果您使用的是PHP,那么可以使用下面的一个。它是一个框架的一部分,但是即使不使用PHP,也可以从中提取信息


不幸的是,在这里发布的代码太多了,你必须遵循链接

我认为英语中的“规则”太多了,没有一个中心方法来实现这一点。也许我错了…@Ian,你没有错,它可能并不完美,但是如果你看看我答案上的链接,你会发现它涵盖了大多数情况。谢谢你。函数拐点::singularize看起来可以完成这项工作。我将变量传递给一个php文件,这样我就可以从那里执行它。这个函数似乎涵盖了我在问题中遗漏的所有规则。
 if ((searchnoun.charAt(searchnoun.length-1))=== 's')
  { searchnoun = searchnoun.(take off last s);}