我可以匹配字符串中的重要关键字吗?
Can I match important Keywords in a string?
假设用户将此搜索字符串输入到新闻搜索引擎:
"Oops, Donald Trump Jr. Did It Again (Wikileaks Edition) :: Politics - Paste"
假设我们有一个新闻标题数据库和一个 "Important People" 数据库。
这里的目标是:如果搜索字符串包含重要人物,那么 return 包含此 "substring" 的结果的排名将高于那些不包含它的结果。
使用 Yahoo Vespa 引擎,如何将充满人名的数据库与长新闻标题字符串进行匹配?
*我希望说得通,对不起大家,我的英语不太好:( 谢谢!
在新闻标题的文档 processing/indexing 期间,您可以使用 "important people" 数据库从输入文本中提取命名实体。这个过程可以在自定义文档处理器中实现。参见 http://docs.vespa.ai/documentation/document-processing-overview.html)。
新闻搜索的文档定义可能看起来像这样,带有自定义排名功能。文档处理器读取输入标题并填充实体数组。
search news {
document news {
field title type string {
indexing: summary | index
}
field entities type array<string> {
indexing: summary | index
match: word
}
}
rank-profile entity-ranking {
first-phase {
expression: nativeRank(title) + matches(entities)
}
}
在查询时,您需要从查询输入中提取相同的命名实体,并构建一个可以搜索标题的 Vespa 查询树(例如使用 OR 或 WeakAnd),还可以搜索实体字段以查找可能的使用 Vespa Rank 运算符的命名实体。例如,给定您的查询示例,实际查询可能类似于:
select * from sources * where rank(title contains "oops" or title
contains "donald" or title contains "trump", entities contains "Donald Trump Jr.");
您可以使用共享的命名实体提取组件在自定义搜索器中构建查询树 http://docs.vespa.ai/documentation/searcher-development.html。
一些资源
- 共享组件&编写自定义searchers/documentprocesors(实现命名实体提取)http://docs.vespa.ai/documentation/jdisc/container-components.html
- 排名http://docs.vespa.ai/documentation/ranking.html
- 查询语言http://docs.vespa.ai/documentation/query-language.html
假设用户将此搜索字符串输入到新闻搜索引擎:
"Oops, Donald Trump Jr. Did It Again (Wikileaks Edition) :: Politics - Paste"
假设我们有一个新闻标题数据库和一个 "Important People" 数据库。 这里的目标是:如果搜索字符串包含重要人物,那么 return 包含此 "substring" 的结果的排名将高于那些不包含它的结果。
使用 Yahoo Vespa 引擎,如何将充满人名的数据库与长新闻标题字符串进行匹配?
*我希望说得通,对不起大家,我的英语不太好:( 谢谢!
在新闻标题的文档 processing/indexing 期间,您可以使用 "important people" 数据库从输入文本中提取命名实体。这个过程可以在自定义文档处理器中实现。参见 http://docs.vespa.ai/documentation/document-processing-overview.html)。
新闻搜索的文档定义可能看起来像这样,带有自定义排名功能。文档处理器读取输入标题并填充实体数组。
search news {
document news {
field title type string {
indexing: summary | index
}
field entities type array<string> {
indexing: summary | index
match: word
}
}
rank-profile entity-ranking {
first-phase {
expression: nativeRank(title) + matches(entities)
}
}
在查询时,您需要从查询输入中提取相同的命名实体,并构建一个可以搜索标题的 Vespa 查询树(例如使用 OR 或 WeakAnd),还可以搜索实体字段以查找可能的使用 Vespa Rank 运算符的命名实体。例如,给定您的查询示例,实际查询可能类似于:
select * from sources * where rank(title contains "oops" or title
contains "donald" or title contains "trump", entities contains "Donald Trump Jr.");
您可以使用共享的命名实体提取组件在自定义搜索器中构建查询树 http://docs.vespa.ai/documentation/searcher-development.html。
一些资源
- 共享组件&编写自定义searchers/documentprocesors(实现命名实体提取)http://docs.vespa.ai/documentation/jdisc/container-components.html
- 排名http://docs.vespa.ai/documentation/ranking.html
- 查询语言http://docs.vespa.ai/documentation/query-language.html