0%

Analyzer

前面的文章有提到 Elasticsearch 因為是使用反向索引,所以會在建立 Document 時將句子拆開來以建立反向索引。而這個拆分的過程就是由分析器所執行的,分析器主要由三個部分所組成 :

  • Character Filters (字符過濾器)
  • Tokenizer (分詞器)
  • Token Filter (單詞過濾器)

下面我們就來了解分析器是如何運作的。

Read more »

Elasticsearch

Elasticsearch 是一個分散式的搜尋引擎,建立在全文搜尋引擎庫 Apache Lucene 的基礎上。而 Elasticsearch 透過提供 Restful 介面的方式來隱藏 Lucene 複雜的搜索理論,使其可以被快速的架設和使用。

此外,Elasticsearch 具有很高的可擴充性和可用性,使其在儲存、索引和搜尋都非常快速、容易。

Read more »

Visual Studio

當你使用 Visual Studio 來開發 .Net 專案時,如果想要重新命名專案你會發現只是重新命名專案的名稱是無法完成的,還需要更改專案資料夾名稱、Namespace 等等。常常改完發現還是編譯失敗,代表還有地方沒改到。

既然在 Visual Studio 裡不太好改,那我們可以改成直接去修改 Visual Studio 建立的這些檔案。

Read more »

Nginx

Nginx 是一種非同步框架的網頁伺服器,可以用作反向代理、負載平衡器和 HTTP 快取,通常做為負載平衡器。

Nginx 為軟體負載平衡,硬體負載平衡常見的有 F5、A10

  • 軟體負載平衡的優點是配置簡單、使用靈活、成本低廉、可以滿足一般的負載均衡;缺點是需要在伺服器上安裝軟體運行、會消耗系統資源、軟體的可擴展性不是很好、會受到系統限制。
  • 硬體負載平衡的優點是獨立於作業系統、整體性能得到提高、可以滿足較高的負載均衡;缺點是使用複雜、成本較高。
Read more »

在 Redis 系列文章的第一篇 Redis (一) - 基本概念 我們有介紹過 Redis 是一個 in-memory 的資料庫,所以資料都會被儲存在記憶體中,這樣的好處是可以提升資料的存取速度。

以往想要將資料放在記憶體來提升存取速度大多是使用 Session 來達成,但是 Session 會因為電腦或伺服器被關閉而被清除。更麻煩的問題是當一個應用要部署到多台伺服器上來分散流量的話 Session 就會不同步,這樣會導致資料和結果不正確。

Read more »

Redis Transaction 可以一次執行多條命令,並且具有以下規範以保證執行無誤。

  • 批次的操作在傳送 EXEC 命令前會被放在 Queue
  • 收到 EXEC 命令後就會開始執行 Transaction,Transaction 中的命令若有失敗則不影響其他命令繼續執行,也就是說 Redis Transaction 不保證操作原子性。
  • 在 Transaction 執行過程中,其他客戶端提交的命令不會插入到 Transaction 的命令列中。

Transaction 的多條命令是被一次性的發送給伺服器而不是一條一條的傳送,這樣的方式可以減少客戶端與伺服器之間的網路通訊次數以提升效能。

Read more »