solr 340Word文件下载.docx
- 文档编号:16328116
- 上传时间:2022-11-22
- 格式:DOCX
- 页数:40
- 大小:270.90KB
solr 340Word文件下载.docx
《solr 340Word文件下载.docx》由会员分享,可在线阅读,更多相关《solr 340Word文件下载.docx(40页珍藏版)》请在冰豆网上搜索。
启动Jetty成功后,如果没有看到错误消息,你可以看到端口信息。
如果你的端口冲突了,你可以到解压的solr示例包的example/etc的jetty.xml中,修改端口port信息。
<
Setname="
port"
>
SystemPropertyname="
jetty.port"
default="
8983"
/>
/Set>
B、利用tomcat发布solr示例
将下载的solr解压后,进入apache-solr-3.4.0\dist目录,将里面的solr.war放到D:
\tomcat-6.0.28\webapps目录下,启动tomcat会自动解压。
(当然,你也可以手动解压放到wabapps目录下)
当然你也可以设置context指向你的solr工程,在D:
\tomcat-6.0.28\conf\Catalina\localhost目录加入solr.xml配置,配置如下:
ContextdocBase="
D:
\solr.war"
debug="
0"
crossContext="
true"
>
<
Environmentname="
solr/home"
type="
java.lang.String"
value="
\solr"
override="
/>
/Context>
上面的2步都是一样的,这样还没有完。
启动后你可能会看到如下错误:
我们需要将一些配置和index库文件也放到解压好的solr工程下。
我们到解压的apache-solr-3.4.0\example\solr目录下,将里面的conf和data目录copy到刚才我们部署的D:
\tomcat-6.0.28\webapps\solr工程目录下。
或是copy到你的solr.xml中的context指定的路径下工程目录中。
重启tomcat就ok了。
4、这个时候你就可以访问http:
//localhost:
8983/solr/admin/你就可以看到如下界面:
在QueryString中输入solr,点击Search就可以查询到相应的结果,结果以xml形式返回。
当然你也可以设置返回数据类型为json。
?
xmlversion="
1.0"
encoding="
UTF-8"
response>
lstname="
responseHeader"
intname="
status"
0<
/int>
QTime"
params"
strname="
indent"
on<
/str>
start"
q"
solr<
version"
2.2<
rows"
10<
/lst>
resultname="
response"
numFound="
1"
start="
doc>
arrname="
cat"
str>
software<
search<
/arr>
features"
AdvancedFull-TextSearchCapabilitiesusingLucene<
OptimizedforHighVolumeWebTraffic<
StandardsBasedOpenInterfaces-XMLandHTTP<
ComprehensiveHTMLAdministrationInterfaces<
Scalability-EfficientReplicationtootherSolrSearchServers<
FlexibleandAdaptablewithXMLconfigurationandSchema<
Goodunicodesupport:
h¨
¦
llo(hellowithanaccentoverthee)<
id"
SOLR1000<
boolname="
inStock"
true<
/bool>
datename="
incubationdate_dt"
2006-01-17T00:
00:
00Z<
/date>
manu"
ApacheSoftwareFoundation<
name"
Solr,theEnterpriseSearchServer<
popularity"
floatname="
price"
0.0<
/float>
/doc>
/result>
/response>
二、Solr理论
1、solr基础
因为Solr包装并扩展了Lucene,所以它们使用很多相同的术语。
更重要的是,Solr创建的索引与Lucene搜索引擎库完全兼容。
通过对Solr进行适当的配置,某些情况下可能需要进行编码,Solr可以阅读和使用构建到其他Lucene应用程序中的索引。
在Solr和Lucene中,使用一个或多个Document来构建索引。
Document包括一个或多个Field。
Field包括名称、内容以及告诉Solr如何处理内容的元数据。
例如,Field可以包含字符串、数字、布尔值或者日期,也可以包含你想添加的任何类型,只需用在solr的配置文件中进行相应的配置即可。
Field可以使用大量的选项来描述,这些选项告诉Solr在索引和搜索期间如何处理内容。
现在,查看一下表1中列出的重要属性的子集:
属性名称
描述
Indexed
IndexedField可以进行搜索和排序。
你还可以在indexedField上运行Solr分析过程,此过程可修改内容以改进或更改结果。
Stored
storedField内容保存在索引中。
这对于检索和醒目显示内容很有用,但对于实际搜索则不是必需的。
例如,很多应用程序存储指向内容位置的指针而不是存储实际的文件内容。
2、solr索引操作
在Solr中,通过向部署在servlet容器中的SolrWeb应用程序发送HTTP请求来启动索引和搜索。
Solr接受请求,确定要使用的适当SolrRequestHandler,然后处理请求。
通过HTTP以同样的方式返回响应。
默认配置返回Solr的标准XML响应。
你也可以配置Solr的备用响应格式,如json、csv格式的文本。
索引就是接受输入元数据(数据格式在schema.xml中进行配置)并将它们传递给Solr,从而在HTTPPostXML消息中进行索引的过程。
你可以向Solr索引servlet传递四个不同的索引请求:
add/update允许您向Solr添加文档或更新文档。
直到提交后才能搜索到这些添加和更新。
commit告诉Solr,应该使上次提交以来所做的所有更改都可以搜索到。
optimize重构Lucene的文件以改进搜索性能。
索引完成后执行一下优化通常比较好。
如果更新比较频繁,则应该在使用率较低的时候安排优化。
一个索引无需优化也可以正常地运行。
优化是一个耗时较多的过程。
delete可以通过id或查询来指定。
按id删除将删除具有指定id的文档;
按查询删除将删除查询返回的所有文档。
Lucene中操作索引也有这几个步骤,但是没有更新。
Lucene更新是先删除,然后添加索引。
因为更新索引在一定情况下,效率没有先删除后添加的效率好。
3、搜索
添加文档后,就可以搜索这些文档了。
Solr接受HTTPGET和HTTPPOST查询消息。
收到的查询由相应的SolrRequestHandler进行处理。
solr查询参数描述:
参数
示例
q
Solr中用来搜索的查询。
有关该语法的完整描述,请参阅参考资料。
可以通过追加一个分号和已索引且未进行断词的字段(下面会进行解释)的名称来包含排序信息。
默认的排序是scoredesc,指按记分降序排序。
q=myField:
JavaANDotherField:
developerWorks;
dateasc
此查询搜索指定的两个字段,并根据一个日期字段对结果进行排序。
start
将初始偏移量指定到结果集中。
可用于对结果进行分页。
默认值为0。
start=15
返回从第15个结果开始的结果。
rows
返回文档的最大数目。
默认值为10。
rows=25,返回25个结果集
fq
提供一个可选的筛选器查询。
查询结果被限制为仅搜索筛选器查询返回的结果。
筛选过的查询由Solr进行缓存。
它们对提高复杂查询的速度非常有用。
任何可以用q参数传递的有效查询,排序信息除外。
hl
当hl=true时,在查询响应中醒目显示片段。
默认为false。
参看醒目显示参数(见参考资料)。
hl=true
fl
作为逗号分隔的列表指定文档结果中应返回的Field集。
默认为“*”,指所有的字段。
“score”指还应返回记分。
*,score
sort
排序,对查询结果进行排序,参考
sort=dateasc,pricedesc
4、solr模式
上面有提到schema.xml这个配置,这个配置可以在你下载solr包的安装解压目录的apache-solr-3.4.0\example\solr\conf中找到,它就是solr模式关联的文件。
打开这个配置文件,你会发现有详细的注释。
模式组织主要分为三个重要配置
types部分是一些常见的可重用定义,定义了Solr(和Lucene)如何处理Field。
也就是添加到索引中的xml文件属性中的类型,如int、text、date等
fileds是你添加到索引文件中出现的属性名称,而声明类型就需要用到上面的types
其他配置有
uniqueKey唯一键,这里配置的是上面出现的fileds,一般是id、url等不重复的。
在更新、删除的时候可以用到。
defaultSearchField默认搜索属性,如q=solr就是默认的搜索那个字段
solrQueryParser查询转换模式,是并且还是或者(and/or)
schema配置类型
fieldTypename="
text"
class="
solr.TextField"
positionIncrementGap="
100"
analyzertype="
index"
tokenizerclass="
solr.WhitespaceTokenizerFactory"
filterclass="
solr.StopFilterFactory"
ignoreCase="
words="
stopwords.txt"
solr.WordDelimiterFilterFactory"
generateWordParts="
generateNumberParts="
catenateWords="
catenateNumbers="
catenateAll="
solr.LowerCaseFilterFactory"
solr.EnglishPorterFilterFactory"
protected="
protwords.txt"
solr.RemoveDuplicatesTokenFilterFactory"
/analyzer>
query"
solr.SynonymFilterFactory"
synonyms="
synonyms.txt"
expand="
/fieldType>
上面就是一个type了,然后你在fields配置field的时候就可以用这个type。
首先,上面的fieldType的配置中有两个analyzer,它是分词器。
主要把我们的数据进行分割成一个个的词语。
词干提取、停止词删除以及相似的操作都被应用于标记,然后才进行索引和搜索,导致使用相同类型的标记。
上面的应用程序的Solr的fieldType配置按以下步骤进行设置:
Ø
根据空白进行断词,然后删除所有的公共词(StopFilterFactory)
使用破折号处理特殊的大小写、大小写转换等等。
(WordDelimiterFilterFactory);
将所有条目处理为小写(LowerCaseFilterFactory)
使用PorterStemming算法进行词干提取(EnglishPorterFilterFactory)
删除所有的副本(RemoveDuplicatesTokenFilterFactory)
Schema属性、字段
fieldname="
string"
indexed="
stored="
required="
sku"
text_en_splitting_tight"
omitNorms="
text_general"
alphaNameSort"
alphaOnlySort"
false"
multiValued="
includes"
termVectors="
termPositions="
termOffsets="
属性是在添加索引、查询的时候必须的配置,如果你不加这些配置。
是无法完成索引的创建的。
首先id属性是未经分析的字符串类型,是可以索引、存储的,并且是唯一的。
sku是一个经过分词器分析出来的英文切割的类型字符,可以索引、存储、不要存储规范
multiValued属性是一个特殊的例子,指Document可以拥有一个相同名称添加了多次的Field。
omitNorms属性告诉Solr(和Lucene)不要存储规范。
介绍一下字段声明下方的<
dynamicField>
声明。
动态字段是一些特殊类型的字段,可以在任何时候将这些字段添加到任何文档中,由字段声明定义它们的属性。
动态字段和普通字段之间的关键区别在于前者不需要在schema.xml中提前声明名称。
Solr将名称声明中的glob-like模式应用到所有尚未声明的引入的字段名称,并根据其<
声明定义的语义来处理字段。
例如,<
dynamicFieldname="
*_i"
sint"
指一个myRating_i字段被Solr处理为sint,尽管并未将其声明为字段。
这种处理比较方便,例如,当需要用户定义待搜索内容的时候。
5、索引配置
Solr性能因素,来了解与各种更改相关的性能权衡。
表1概括了可控制Solr索引处理的各种因素:
因素
useCompoundFile
通过将很多Lucene内部文件整合到单一一个文件来减少使用中的文件的数量。
这可有助于减少Solr使用的文件句柄数目,代价是降低了性能。
除非是应用程序用完了文件句柄,否则false的默认值应该就已经足够。
mergeFactor
决定低水平的Lucene段被合并的频率。
较小的值(最小为2)使用的内存较少但导致的索引时间也更慢。
较大的值可使索引时间变快但会牺牲较多的内存。
maxBufferedDocs
在合并内存中文档和创建新段之前,定义所需索引的最小文档数。
段是用来存储索引信息的Lucene文件。
maxMergeDocs
控制可由Solr合并的Document的最大数。
较小的值(<
10,000)最适合于具有大量更新的应用程序。
maxFieldLength
对于给定的Document,控制可添加到Field的最大条目数,进而截断该文档。
如果文档可能会很大,就需要增加这个数值。
然而,若将这个值设置得过高会导致内存不足错误。
unlockOnStartup
unlockOnStartup告知Solr忽略在多线程环境中用来保护索引的锁定机制。
在某些情况下,索引可能会由于不正确的关机或其他错误而一直处于锁定,这就妨碍了添加和更新。
将其设置为true可以禁用启动锁定,进而允许进行添加和更新。
6、查询处理配置
maxBooleanClauses>
标记定义了可组合在一起形成一个查询的子句数量的上限。
对于大多数应用程序而言,默认的1024就应该已经足够;
然而,如果应用程序大量使用了通配符或范围查询,增加这个限值将能避免当值超出时,抛出TooManyClausesException。
若应用程序预期只会检索Document上少数几个Field,那么可以将<
enableLazyFieldLoading>
属性设置为true。
懒散加载的一个常见场景大都发生在应用程序返回和显示一系列搜索结果的时候,用户常常会单击其中的一个来查看存储在此索引中的原始文档。
初始的显示常常只需要显示很短的一段信息。
若考虑到检索大型Document的代价,除非必需,否则就应该避免加载整个文档。
query>
部分负责定义与在Solr中发生的事件相关的几个选项。
Searcher的Java类来处理Query实例。
要改进这一设计和显著提高性能,把这些新的Searcher联机以便为现场用户提供查询服务之前,先对它们进行“热身”。
部分中的<
listener>
选项定义newSearcher和firstSearcher事件,您可以使用这些事件来指定实例化新搜索程序或第一个搜索程序时应该执行哪些查询。
如果应用程序期望请求某些特定的查询,那么在创建新搜索程序或第一个搜索程序时就应该反注释这些部分并执行适当的查询。
solrconfig.xml文件的剩余部分,除<
admin>
之外,涵盖了与缓存、复制和扩展或定制Solr有关的项目。
admin部分
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- solr 340
![提示](https://static.bdocx.com/images/bang_tan.gif)