我在网站上有数千个页面,我将其解析并存储为倒排索引即
文档
- 乖巧(PK,FK)
- 网址
- 字符数
- 字数
Charactercount 和 wordcount 帮助我从短文档中确定我以后可能会使用的长文档。
单词
- wordid (PK,FK)
- 单词
- doc_freq
- inverse_doc_freq
对于 inverse_doc_freq 计算,我使用虚构的高数 (100000000) 来防止重新计算总文档。
位置
- 词义
- 温顺的
- word_freq
- 重量
(wordid & docid 结合唯一)
权重是在简单的基础上计算的分数,例如标题中的单词 + url 中的单词 + 单词频率等。
我在为搜索词构建 sql 查询时遇到问题。对于 3 字搜索,我正在做
- 将查询分解为每个单词
- 检查每个单词的 inverse_doc_freq 并移除低 idf 单词(移除停用词)
- 词干剩余的单词(假设还剩下 3 个单词)
- 查询每个单词
在第 4 阶段,我被卡住了!我的 SQL 查询就像
SELECT d.docid,url,inverse_doc_freq,word_freq,weight from document d,word w,loc l WHERE d.docid=l.docid AND w.wordid=l.wordid AND (word='word1' OR word='word2' OR word='word3') ORDER BY weight DESC
但返回的文件不正确。相信我可能必须搜索三次才能找到每个单词的文档,然后尝试找到常见的文档,但是如何?是否可以只使用 1 个 MySQL 查询?是否可以使用TF-IDF以及如何使用?