Java 使用Lucene获得更好的搜索结果
我有一个数据库,里面有很多书。我有标题、描述、作者等字段 我正在索引标题,提升100f,描述,提升0.1f,这两个字段都是标记化和词干化的 我使用一个输入字段进行搜索,该字段使用booleanquery与BooleanClause.Occurse.SHOULD连接并包含每个字段的通配符查询来搜索所有可用字段。我还从查询中删除了所有“stopwords”作为开始 我遇到的问题是当我搜索不带引号的字符串时 “de wetenschap van het leven”,删除停止词后,我得到“wetenschap leven” 标题查询变为“Java 使用Lucene获得更好的搜索结果,java,lucene,Java,Lucene,我有一个数据库,里面有很多书。我有标题、描述、作者等字段 我正在索引标题,提升100f,描述,提升0.1f,这两个字段都是标记化和词干化的 我使用一个输入字段进行搜索,该字段使用booleanquery与BooleanClause.Occurse.SHOULD连接并包含每个字段的通配符查询来搜索所有可用字段。我还从查询中删除了所有“stopwords”作为开始 我遇到的问题是当我搜索不带引号的字符串时 “de wetenschap van het leven”,删除停止词后,我得到“wetens
*wetenschap
**leven
*”,描述查询相同,包装booleanquery与BooleanClause.occure.SHOULD连接
以下书籍在数据库中
- Wetensschappelijk denken。伊恩 在梅迪奇岛 wetenschappen en voor de生物医药公司 安德烈·莱文斯韦查普李>
- 德 韦滕查普范德阿尔德。伊恩 左旋刨床
- 阿特拉斯范德酒店 门塞利克列文斯洛普酒店
- 德韦滕查普 范赫特·莱文。伊恩海德酒店 生物多样性
我还为整个字符串添加了短语搜索,从而提高了相关性。通过这种方式,我们仍然可以获得“搜索所有内容”的行为,并且标题比其他内容更相关。我认为您可能需要一个span查询(特别是span查询) 给出了一份文件“一只敏捷的棕色狐狸跳过了一只懒狗” 它可以找到“棕色狐狸”和“懒狗”的匹配项。您可以调整slop设置来调整两个搜索查询短语/术语之间的距离……简言之,它提供了许多工具来调整搜索
同样不熟悉荷兰语(?)您可能希望尽可能阻止查询,并避免使用通配符-它们非常昂贵,并且会导致较低的精确度和召回率。已经有一段时间了,但是您是如何进行整个字符串短语搜索的,您是否只进行了两次搜索,然后以某种方式组合结果?