Sphinx 使用 Snippets (Excerpts) 達成 Highlight 功能
2020.6.30
在 sphinx.conf 裡將全文欄位 myField 也設為 attribute
source mySource
{
....
xmlpipe_field_string = myField
....
}
select 語法,例如搜尋「法鼓」
SELECT SNIPPET(myField, '法鼓', 'exact_phrase=1') AS highlight FROM myIndex
如果要回傳整份文件,可以使用 將 limit 設為 0
SELECT SNIPPET(myField, '法鼓', 'exact_phrase=1', 'limit=0') AS highlight FROM myIndex
如果使用 not, near 等 extend syntax, 也可使用 query_mode 參數:
SELECT SNIPPET(myField, '"阿含 迦葉"~5', 'exact_phrase=1', 'limit=0', 'query_mode=1') AS highlight FROM myIndex
回傳如下結果:
"highlight": "不蘭<b>迦葉之見,長阿含</b>十七卷沙門果經,長部一卷沙門果經參照。"
參考資源:
- Sphinx SELECT syntax
- BuildExcerpts (optional highlighting parameters)