【发布时间】:2010-10-26 03:20:50
【问题描述】:
我一直在玩弄一个相当简单的自制搜索引擎,现在我正在玩弄一些相关性排序代码。
它不是很漂亮,但在聪明的算法方面我不是很好,所以我希望我能得到一些建议:)
基本上,我希望每个搜索结果都根据匹配搜索条件的单词数获得评分。每个完全匹配的单词得 3 分,部分匹配得 1 分
例如,如果我搜索“冬雪”,结果如下:
- 冬天 雪 => 6分
- 冬天 下雪ing => 4 分
- 冬天土地雪 => 4分
- 冬天 太阳 => 3 分
- 冬天土地下雪ing => 2 分
代码如下:
String[] resultWords = result.split(" ");
String[] searchWords = searchStr.split(" ");
int score = 0;
for (String resultWord : resultWords) {
for (String searchWord : searchWords) {
if (resultWord.equalsIgnoreCase(searchWord))
score += 3;
else if (resultWord.toLowerCase().contains(searchWord.toLowerCase()))
score++;
}
}
【问题讨论】:
-
您要解决的具体问题是什么?是不是太慢了?使用大量内存?你想到了什么优化?
-
速度主要是。事实证明,这可能是数据库的瓶颈。
标签: java optimization search