java - Lucene 搜索 - 如果字段中包含单词或类似内容,则得分更高

标签 java text lucene field

我需要知道一个或多个单词何时位于索引中的字段内,并让该文档获得更高的分数。

我的问题是,如果我搜索“Sherton Hotel”,我会得到最好的结果

  1. 佩蒂特酒店
  2. 疯狂的牛
  3. 西蒙斯

我希望这些能够取得最好的结果

  1. 靠近月球的毛伊岛喜来登酒店
  2. 一家看起来像喜来登的梦幻酒店

我希望如果“我正在搜索”或类似的词在里面,在本例中,“hotelName”字段中,除了字段文本的长度之外,它们还有更高的分数。

我认为对于 Lucene, “Seraton Hotel”与“Crazy Cow”的相似度比“A Wonderful hotel, like Sheraton”的相似度更高。

最佳答案

TermQuery 查找精确匹配,FuzzyQuery 的做法略有不同。在不知道 hotelNameToSearchhotel.getName().toLowerCase 是什么的情况下,我无法真正说出发生了什么,但为什么不使用内置的 queryParser?只需添加带有数值的波形符 (~) 即可表示模糊查询?

关于java - Lucene 搜索 - 如果字段中包含单词或类似内容,则得分更高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3531491/

相关文章:

lucene - 从 Lucene 查询中获取匹配的术语

java - 如何从 Lucene 5.x 中的字段中获取 n 个第一项?

java - 设置 JOptionPane 中字符串值的格式

jQuery 选择文本并在段落中添加跨度

javascript - 如何使用 javascript 获取选定的文本 id 并替换文本并保持标签完整?

java,eclipse - eclipse 每次都会带来 hs_err_pid 文件?

python - 是否有针对 python 的开放搜索解决方案?

java - JUnit 测试 JSON 响应时出现断言错误

java - 在 Ubuntu 16.04 上通过 Tizen Studio CLI 创建 Tizen native 项目失败

java - 如何计算队列中单词的字母数量?