将相关性排序与 ArangoDb 中的词前缀搜索相结合?
Combining relevance sorting with word prefix searching in ArangoDb?
在 ArangoDB 中,我使用的搜索视图使用 BM25 对结果进行排序,例如:
FOR doc IN someView
SEARCH ANALYZER(doc.description == 'foo', 'text_en')
SORT BM25(doc)
RETURN doc
虽然这只执行完整的单词搜索(即不会匹配包含 "foot"、"a football" 等的文档),所以我想改用单词前缀搜索。
我知道这可以通过 FULLTEXT 索引来完成,例如:
FOR doc IN FULLTEXT(someCollection, "description", "prefix:foo")
RETURN doc
但是我失去了相关性排序。
有没有一种方法可以将这两者结合起来,以便我可以执行部分单词匹配,同时还能获得按相关性排序的结果?
您可以使用STARTS_WITH
函数,例如
FOR doc IN someView
SEARCH ANALYZER(STARTS_WITH(doc.description, 'foo'), 'text_en')
SORT BM25(doc)
RETURN doc
ArangoSearch 支持的更多功能请查看文档:
https://www.arangodb.com/docs/stable/aql/views-arango-search.html
在 ArangoDB 中,我使用的搜索视图使用 BM25 对结果进行排序,例如:
FOR doc IN someView
SEARCH ANALYZER(doc.description == 'foo', 'text_en')
SORT BM25(doc)
RETURN doc
虽然这只执行完整的单词搜索(即不会匹配包含 "foot"、"a football" 等的文档),所以我想改用单词前缀搜索。
我知道这可以通过 FULLTEXT 索引来完成,例如:
FOR doc IN FULLTEXT(someCollection, "description", "prefix:foo")
RETURN doc
但是我失去了相关性排序。
有没有一种方法可以将这两者结合起来,以便我可以执行部分单词匹配,同时还能获得按相关性排序的结果?
您可以使用STARTS_WITH
函数,例如
FOR doc IN someView
SEARCH ANALYZER(STARTS_WITH(doc.description, 'foo'), 'text_en')
SORT BM25(doc)
RETURN doc
ArangoSearch 支持的更多功能请查看文档: https://www.arangodb.com/docs/stable/aql/views-arango-search.html