跳到主要內容

coreseek使用心得

為了應付日益龐大的資料量,我開始試用coreseek協助全文搜尋的功能,獲得了不錯的效果,因而列出幾項心得留作記錄。

一、官網
http://www.coreseek.cn/products-install/install_on_windows/
有非常豐富的資訊,以及全中文的使用手冊。

二、教學網站
http://www.cnblogs.com/phpway/archive/2013/02/06/2908097.html
這是我獲益最大的教學網站。

三、有的沒的

1.執行coreseek要先跑索引,索引的對象在mysql裡可以是表格,也可以是view,可以用view做索引真的很方便。另外,理論上作為主鍵的數字是不能重複的,但實際使用上似乎可以,尤其用view跑的時候常會有這種情形,但前提是後面的文字內容必須一樣。

2.系統帶的分詞設定很有可能會導致某些資料找不到,用mysql自帶的全文搜尋和coreseek的搜尋結果就可以看出來,所以要求精確搜尋的人記得清空分詞的檔案(預設為var資料夾下的uni.lib、unigram.txt)。

3.資料限制1000筆真的不夠,要在csft_mysql.conf裡改,使用api的話,sphinxapi.php也要改。

4.排序方式說明說講得有點模糊,補充如下:
 $sph = new SphinxClient();
 $sph->SetSortMode(SPH_SORT_ATTR_ASC,"xxx")
 在SphinxClient對象中有個SetSortMode設定,共有六個模式,比較常用的有四種:
 SPH_SORT_RELEVANCE 模式, 按相关度降序排列(預設模式)
 SPH_SORT_ATTR_DESC 模式, 按属性降序排列 (属性值越大的越是排在前面)
 SPH_SORT_ATTR_ASC 模式, 按属性升序排列(属性值越小的越是排在前面)
 SPH_SORT_EXPR 模式,按某个算术表达式排序。
 第二三種後面要接一個屬性值,屬性值要在csft_mysql.conf的
 sql_attr_uint = xxx
 這邊設定,一開始就要讀進去。用的時候直接名字加引號就可以了,不用加$。

5.預設的匹配模式有點麻煩,反正加引號針對那個詞找就好了。

6.其他
以他自帶的csft_mysql.conf範例來說
source mysql
{
    type                    = mysql

    sql_host                = localhost  
    sql_user                = root
    sql_pass                =
    sql_db                    = test
    sql_port                = 3306
//上面這些帳密等都不用加引號
    sql_query_pre            = SET NAMES utf8

    sql_query                = SELECT id, group_id FROM documents
                                                              #sql_query第一列id需为整数
                                                              #title、content作为字符串/文本字段,被全文索引
//這裡第一個是id,第二個是全文,第三個以後是篩選用的attr
    sql_attr_uint            = group_id           #从SQL读取到的值必须为整数
//篩選用的attr欄位名稱
    sql_attr_timestamp        = date_added #从SQL读取到的值必须为整数,作为时间属性
//沒用過,找不到也無所謂
    sql_query_info_pre      = SET NAMES utf8
    sql_query_info            = SELECT * FROM documents WHERE id=$id
//這一行如果用api的話,不用管也無所謂
}

#index定义
index mysql
{
    source            = mysql             #对应的source名称
    path            = var/data/mysql #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
    docinfo            = extern
    mlock            = 0
    morphology        = none
    min_word_len        = 1
    html_strip                = 0

    charset_dictpath = etc/
//這裡就是放分詞的地方,要精確搜尋的話就清空檔案內容吧                          
    charset_type        = zh_cn.utf-8
}

#全局index定义
indexer
{
    mem_limit            = 128M
}

#searchd服务定义
searchd
{
    listen                  =   9312
    read_timeout        = 5
    max_children        = 30
    max_matches            = 1000
//這個是搜尋限制,改大一點
    seamless_rotate        = 0
    preopen_indexes        = 0
    unlink_old            = 1
}

7.與mysql
使用api的話(coreseek\api\sphinxapi.php),只能撈出id,要用這些id再進mysql撈全文出來,使用表的話當然沒問題,用view就要小心,id不能重複,最好要設計成從id就知道是哪個表出來的,這樣找起來更快一點。


留言

這個網誌中的熱門文章

2016鳥取島根岡山之旅(三)

松江站身輕便(松江駅身がる便) 松江站提供的行李寄送服務,服務對象是宍道湖溫泉和玉造溫泉的住宿客,服務時間為早上九點到下午三點,三點以後會開始配送行李到各個旅館,通常五點前就會送到了。 對不想拎著行李逛街的人來說非常方便,反正都要寄放行李,不如寄到旅館,而且還只要500円,大型行李櫃都還要700円說,實在很划算。 能送到的旅館只限「松江市內」,也就是位在「宍道湖溫泉」和「玉造溫泉」的溫泉旅館。 參考網址: http://www.kankou-matsue.jp/information/service/ http://www.saninji.jp/1930 實際寄送方式如下: 1.到JR松江站以後抬頭就會看到一個看板,照著看板指示前往「南口」的「臨時寄物處」(荷物一時預り所)。 2.由於臨時寄物處在站外,如果一下子找不到的話可以先找到寄物櫃,也就是コインロッカー(Coin Lockers) 3.寄物櫃旁邊就會看到這個招牌,繼續沿著站外走。 4.路上會一直有標示,指引前往臨時寄物處。 5.這裡就是了,別看有派出所就怕了,就是這裡沒錯。 6.跟裡面的人說要寄到哪裡,他會幫你寫好寄送位置,你只要寫名字就好,寫跟旅館訂房間的名字,如果訂房時只有一個名字,寫那個人就可以了。 7.可能會問你有沒有手機號碼,不過大部分人就算有也打不通,說沒有也沒關係。 8.最後會拿到一張收據,理論上要憑收據到旅館櫃檯領行李,不過溫泉旅館秉著服務至上的精神,只要訂房名字沒錯的話,就會直接幫你放到房間裡。

網站掃描CSP弱點問題

 最近被網站弱點掃描的CSP問題困擾很久,CSP問題主要是兩種: 1.在CSP中允許內聯腳本執行 2.從CSP中缺少必要的指令 AppScan這兩個問題提供的處理方式都是「配置正確值的Content-Security-Policy」,等於沒說。 後來才發現AppScan無法處理多層的Content-Security-Policy,例如在httpd.conf中設定: default-src 'self' 'unsafe-inline'; 又在htaccess設定 script-src 'self'; 正常來說瀏覽器會採用htaccess的設定,即「script-src 'self';」而不是「script-src 'self' 'unsafe-inline'」,以安全性來說是符合的,但AppScan無法判斷,直接當你沒設定好CSP,解決方法只有不要重複設定,保留一項設定就好。

2017宮崎鹿兒島(二)高千穗町內交通

進入高千穗景點之前,必須再提一下高千穗內的交通情況, 1.步行 請看下圖: 以「巴士中心」為基準,藍色的「高千穗鐵道」「高千穗神社」「高千穗峽」是一小時內可以走得到的景點,紅色是千萬不要走也走不到的景點,白色箭頭是地勢高低,「高千穗神社」到「高千穗峽」是很陡的下坡,去程很輕鬆,回程會很辛苦。 「天岩戶神社」「天安河原」之間走路可到,但從千萬不要想從「巴士中心」走到「天岩戶神社」,一望無際的梯田,會走到你懷疑人生的價值(笑),兩邊只能搭公車或計程車。 「國見之丘」不管從哪裡都沒有大眾交通工具,只能搭計程車。 2.計程車 高千穗巴士中心旁就是計程車中心,有非常清楚的價目表、所需時間等等資訊,假如是平日而且有三四個人的話,計程車絕對是最好的選擇。價目表如下: 3.巴士 高千穗的巴士有兩種,但班次都很少: a.平日有的 ふれあいバス http://www.town-takachiho.jp/industry/bus/entry090908332.html b.只有週末跟國定假日開的 回遊バス http://www.miyakoh.co.jp/bus/rosen/takachiho_kaiyuu.html 普通只有「天岩戶神社-巴士中心」,「高千穗峽-巴士中心」兩種路線會需要搭巴士,兩種巴士的站名不太一致,簡易說明如下: 「天岩戶神社-巴士中心」: 「ふれあいバス」的「宮交バスセンター」到「岩戶」,「回遊バス」的「高千穂バスセンター」到「天岩戸神社」 「高千穗峽-巴士中心」: 「ふれあいバス」在高千穗峽沒有站牌,「回遊バス」的「高千穂バスセンター」到「高千穂峡」。 非常強烈建議要去高千穗玩的遊客,盡量選擇週末假日前往,巴士班次多很多,也比較可能「宮崎-高千穗」一日遊,如果一定要平日去的話,計程車大概是唯一的選擇了。