Sitecore的8.1:自定义搜索索引无法通过PDF
问题描述:
搜索我有我想要索引PDF文件内容的自定义搜索索引。主索引似乎是索引PDF文件罚款和sitecore的内置搜索功能搜索PDF文件非常好。我似乎在尝试索引PDF字段时遇到问题,然后搜索它的内容。Sitecore的8.1:自定义搜索索引无法通过PDF
在我indexConfiguration我加名字的申请
<fieldNames hint="raw:AddFieldByFieldName">
<field fieldName="publication pdf" storageType="YES" indexType="TOKENIZED" vectorType="NO" boost="1f" type="System.String" settingType="Sitecore.ContentSearch.LuceneProvider.LuceneSearchFieldConfiguration, Sitecore.ContentSearch.LuceneProvider" />
...
</fieldNames>
我的结果项包含索引字段定义
[IndexField("publication pdf")]
public virtual string PDF { get; set; }
然而,当我创建的搜索范围内,并设法找到的PDF里面的东西,我得到0结果。
var query = context.GetQueryable<ResultItem>();
query = query.Where(p => p.PDF.Equals(SearchString));
任何帮助是极大的赞赏。
答
我猜你的“出版PDF”字段是某种参考场到媒体库项目。 PDF的内容实际上不是您当前项目的内容。这意味着您需要编写一个自定义计算字段来提取该媒体库项目并抓取其内容。
如果你想抓取媒体项目的内容,你可能需要使用一些反射镜来检查Sitecore.ContentSearch.ComputedFields.MediaItemContentExtractor
类的代码。它使用Sitecore的得到的媒体项目的内容,如Sitecore.ContentSearch.Lucene.DefaultIndexConfiguration.config
定义:
<field fieldName="_content" type="Sitecore.ContentSearch.ComputedFields.MediaItemContentExtractor,Sitecore.ContentSearch">
<mediaIndexing ref="contentSearch/indexConfigurations/defaultLuceneIndexConfiguration/mediaIndexing"/>
</field>
您需要首先得到媒体项目,然后用从此类复制的代码来获得PDF的内容。
但
呀,总有but
。如果媒体库项目已更改且您的项目未更改,则您的项目将不会自动重新索引。所以,如果你打算改变PDF文件(上传新的项目,然后选择它应该是罚款),就需要既考虑一下将执行其持有引用您的PDF文件中的项目重新编制索引的,或手动重新索引您的项目自定义代码。
我猜你的“出版PDF”字段是某种参考场到媒体库项目。 PDF的内容实际上不是您当前项目的内容。这意味着您需要编写一个自定义计算字段来提取该媒体库项目并抓取其内容。 –
正确。出版PDF是一个文件字段。关于如何抓取PDF内容的指针?我确定我可以使用计算机字段来查找文件的ID,不确定是否需要抓取或提取PDF的内容。 – Freecode