gpt4 book ai didi

sql-server - 模糊逻辑搜索全名

转载 作者:行者123 更新时间:2023-12-03 16:51:18 32 4
gpt4 key购买 nike

我正在寻找一个能够使用模糊逻辑算法来查找超过一百万条酒店名称记录的搜索引擎。这个想法是为了能够在输入拼写错误或与预期的顺序不同时找到/建议酒店名称。

我自己尝试使用 clj-fuzzy 库构建一个带有 ArangoDB 的 FOXX 应用程序。自由文本集合对每个条目应用一种算法(Metaphone、Double Metaphone、Soundex、NYSIIS、Caverphone、Cologne Phonetic 或 MRA codex)并存储在代码属性中。在该字段上创建全文索引并使用此 AQL 查询:

/*
Example using doubleMetaphone
-----------------------------
Hotel: Four (FR) Points (PNTS) By (P) Sheraton (XRTN) Daning (TNNK)
Input: Sheraton (XRTN) Points (PNTS)
*/
for h in FLATTEN(UNION(
(return FULLTEXT(fte_hotels, "fullcode", "XRTN")),
(return FULLTEXT(fte_hotels, "fullcode", "PNTS"))
))
let score = (CONTAINS(h.fullcode, "XRTN") && CONTAINS(h.fullcode, "PNTS") ? 10:0) +
(CONTAINS(h.fullcode, "XRTN") ? 1:0) +
(CONTAINS(h.fullcode, "PNTS") ? 1:0)
sort score desc
limit 10
return { hotel: h, score: score }

已编辑:关于如何使用 Sql Server 实现相同功能的任何其他建议?

谢谢

最佳答案

到目前为止你所做的看起来不错。如果你想对单词进行模糊搜索,那么你必须使用专门的算法对单词进行一些预处理。

稍微优化一下查询:如果您愿意,您也可以在一次调用 FULLTEXT 中查找这两个搜索项。

下面的 block

for h in FLATTEN(UNION(
(return FULLTEXT(fte_hotels, "fullcode", "XRTN")),
(return FULLTEXT(fte_hotels, "fullcode", "PNTS"))
))
...

应该可以转换为以下稍微简单的表达式:

for h in FULLTEXT(fte_hotels, "fullcode", "XRTN,|PNTS")
...

关于sql-server - 模糊逻辑搜索全名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26775192/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com