您现在的位置是:主页 > news > 纳森网络做网站多少钱/百度信息流怎么收费

纳森网络做网站多少钱/百度信息流怎么收费

admin2025/5/3 23:46:07news

简介纳森网络做网站多少钱,百度信息流怎么收费,免费模板下载网站,简洁类wordpress主题终于将Lucene集成到中文WordPress中了,实现了中文博客的全文搜索。作为一个搞NLP的博主,如果还在用SQL的LIKE做搜索,那也太不上档次了。这次集成主要难点在于①PHP平台上并没有一款成熟的分词套件。②Lucene的PHP Port只有Zend_Search_Lucene…

纳森网络做网站多少钱,百度信息流怎么收费,免费模板下载网站,简洁类wordpress主题终于将Lucene集成到中文WordPress中了,实现了中文博客的全文搜索。作为一个搞NLP的博主,如果还在用SQL的LIKE做搜索,那也太不上档次了。这次集成主要难点在于①PHP平台上并没有一款成熟的分词套件。②Lucene的PHP Port只有Zend_Search_Lucene…

终于将Lucene集成到中文WordPress中了,实现了中文博客的全文搜索。作为一个搞NLP的博主,如果还在用SQL的LIKE做搜索,那也太不上档次了。这次集成主要难点在于

①PHP平台上并没有一款成熟的分词套件。

②Lucene的PHP Port只有Zend_Search_Lucene一家,其对中文的支持非常糟糕,默认编码是ANSII;而且代码内部有不少错误,比如静态方法调用非静态成员。

③BAE对程序执行时间有限制,因此长文章必须忍痛割爱。

下面谈谈问题的解决以及整个实现过程。

一、Lucene的集成

wpsearch插件是WordPress上的Lucene集成插件,不过不要高兴得太早。wpsearch已经2年多没有更新,并且不支持中文。解决思路是去Zend的发行包里提取下列文件:

Zend

│  Exception.php

│  tree.txt

│  Version.txt

├─Search

│  │  Exception.php

│  │  Lucene.php

│  │

│  └─Lucene

│      │  Document.php

│      │  Exception.php

│      │  Field.php

│      │  FSM.php

│      │  FSMAction.php

│      │  Interface.php

│      │  LockManager.php

│      │  MultiSearcher.php

│      │  PriorityQueue.php

│      │  Proxy.php

│      │  TermStreamsPriorityQueue.php

│      │

│      ├─Analysis

│      │  │  Analyzer.php

│      │  │  Token.php

│      │  │  TokenFilter.php

│      │  │

│      │  ├─Analyzer

│      │  │  │  Common.php

│      │  │  │

│      │  │  └─Common

│      │  │      │  Text.php

│      │  │      │  TextNum.php

│      │  │      │  Utf8.php

│      │  │      │  Utf8Num.php

│      │  │      │

│      │  │      ├─Text

│      │  │      │      CaseInsensitive.php

│      │  │      │

│      │  │      ├─TextNum

│      │  │      │      CaseInsensitive.php

│      │  │      │

│      │  │      ├─Utf8

│      │  │      │      CaseInsensitive.php

│      │  │      │

│      │  │      └─Utf8Num

│      │  │              CaseInsensitive.php

│      │  │

│      │  └─TokenFilter

│      │          LowerCase.php

│      │          LowerCaseUtf8.php

│      │          ShortWords.php

│      │          StopWords.php

│      │

│      ├─Document

│      │      Docx.php

│      │      Exception.php

│      │      Html.php

│      │      OpenXml.php

│      │      Pptx.php

│      │      Xlsx.php

│      │

│      ├─Index

│      │  │  DictionaryLoader.php

│      │  │  DocsFilter.php

│      │  │  FieldInfo.php

│      │  │  SegmentInfo.php

│      │  │  SegmentInfoPriorityQueue.php

│      │  │  SegmentMerger.php

│      │  │  SegmentWriter.php

│      │  │  Term.php

│      │  │  TermInfo.php

│      │  │  TermsPriorityQueue.php

│      │  │  Writer.php

│      │  │

│      │  ├─SegmentWriter

│      │  │      DocumentWriter.php

│      │  │      StreamWriter.php

│      │  │

│      │  └─TermsStream

│      │          Interface.php

│      │

│      ├─Interface

│      │      MultiSearcher.php

│      │

│      ├─Search

│      │  │  BooleanExpressionRecognizer.php

│      │  │  Query.php

│      │  │  QueryEntry.php

│      │  │  QueryHit.php

│      │  │  QueryLexer.php

│      │  │  QueryParser.php

│      │  │  QueryParserContext.php

│      │  │  QueryParserException.php

│      │  │  QueryToken.php

│      │  │  Similarity.php

│      │  │  Weight.php

│      │  │

│      │  ├─Highlighter

│      │  │      Default.php

│      │  │      Interface.php

│      │  │

│      │  ├─Query

│      │  │  │  Boolean.php

│      │  │  │  Empty.php

│      │  │  │  Fuzzy.php

│      │  │  │  Insignificant.php

│      │  │  │  MultiTerm.php

│      │  │  │  Phrase.php

│      │  │  │  Preprocessing.php

│      │  │  │  Range.php

│      │  │  │  Term.php

│      │  │  │  Wildcard.php

│      │  │  │

│      │  │  └─Preprocessing

│      │  │          Fuzzy.php

│      │  │          Phrase.php

│      │  │          Term.php

│      │  │

│      │  ├─QueryEntry

│      │  │      Phrase.php

│      │  │      Subquery.php

│      │  │      Term.php

│      │  │

│      │  ├─Similarity

│      │  │      Default.php

│      │  │

│      │  └─Weight

│      │          Boolean.php

│      │          Empty.php

│      │          MultiTerm.php

│      │          Phrase.php

│      │          Term.php

│      │

│      └─Storage

│          │  Directory.php

│          │  File.php

│          │

│          ├─Directory

│          │      Filesystem.php

│          │

│          └─File

│                  Filesystem.php

│                  Memory.php

└─Xml

Exception.php

Security.php

替换wpsearch的Zend文件夹,这还没完注意Zend的引用路径需要修改。这样我们就让一款2年前的插件获得了新的生命力。

二、PHP中文分词

PHP本来就不方便做高级算法,所以纯PHP的分词包极其难找,我只发现了一款PHPAnalysis分词系统。PHPAnalysis只支持词典分词,也就是说分词并不精准。不过我暂时也不能要求那么高,我倒是想用CRF分词,但问题是PHP的执行效率能满足要求吗?BAE的时间限制够用吗?如果是自己的主机的话,我当然可以选择Java Bridge或者其他的C接口。但是博客目前托管在BAE云平台上,没有那么高的自由度。

仿照StandardAnalyzer_Analyzer_Standard_English自己实现一个中文Analyzer,等以后有机会再用高级的分词吧。

(注:此分词实在无法胜任,码农场已经放弃全文索引。)

三、长文章截取

由于BAE开启了FastCGI,所以必须考虑时间耗费。对于长度过大的文章,只截取前10000个字做索引,总算在BAE上面跑了起来。

看看WordPress全文搜索的效果吧

我以“算法的文章”作为查询条件,很明显,任何文章里都没有直接写这句话,SQL的LIKE也就无能为力了,但是Lucene能够给出正确的答案:

效果还是蛮不错的,有时间加一点复杂的功能,比如同义词和指代消解,想想还是挺有趣的。