请看下面的例子:
“给我找一部 4 GB 内存和至少 16 GB 存储空间的安卓手机。”
首先,您需要一个可以直接从输入中提取并插入到搜索查询中的单词列表。这是最简单的部分。
“给我找一个具有 4 GB 内存和至少 16 GB 存储空间的 android 手机。”
接下来,输入中会有数字。
“给我找一部具有 4 gb 内存和至少 16 gb 存储空间的 Android 手机。”
您现在已经提取了“android”和“phone”这两个词。现在您必须提取数字 - 以及它们之前和之后的 2 或 3 个单词。
“给我找一部 Android 具有 4 GB 内存和至少 16 GB 存储空间的手机。”
下一步是弄清楚这些数字的含义。为此,您需要一个如下表:(我们将此表称为“属性”)
将上表与您从输入中提取的数字周围的数字和单词进行比较:
4---phone,with,gb,ram
6---至少,gb,存储
通过使用合适的算法和属性表,您可以轻松找出数字的含义。只需将每个数字与每个属性进行比较 - 首先检查数字编号是否在属性范围内,然后检查单词是否输入中的数字与属性的标签匹配。
现在您知道每个数字的含义(4=ram,6=storage),您必须检查输入中的不等式。
检查不等式:
如果有“至少”、不超过”、“最多”等短语,那么你有一个不平等。在我们的例子中,您在数字 4 附近找不到这样的词,但您可以在数字 6 附近找到术语“至少”。这意味着用户想要一部具有正好 4 GB 内存的手机(使用 == ),但是内部存储空间可能大于或等于 6 GB(使用 >=)。
另请注意,如果您无法将数字与房产相关联,则该数字很可能就是价格。
您可以添加更多功能。例如让用户按属性的递增/递减顺序对结果进行排序。例如:
“给我找一部 4 GB 内存和至少 16 GB 存储空间的安卓手机。显示便宜的first”