python - 如何在 Pylucene 8.6.1 中创建自定义分析器?
问题描述
我通常会使用如下分析仪。
import lucene
from org.apache.lucene.analysis.core import WhitespaceAnalyzer
from org.apache.lucene.index import IndexWriterConfig, IndexWriter
from org.apache.lucene.store import SimpleFSDirectory
from java.nio.file import Paths
from org.apache.lucene.document import Document, Field, TextField
index_path = "./index"
lucene.initVM()
analyzer = WhitespaceAnalyzer()
config = IndexWriterConfig(analyzer)
store = SimpleFSDirectory(Paths.get(index_path))
writer = IndexWriter(store, config)
doc = Document()
doc.add(Field("title", "The quick brown fox.", TextField.TYPE_STORED))
writer.addDocument(doc)
writer.close()
store.close()
而不是WhitespaceAnalyzer()
我想使用MyAnalyzer()
which should have LowerCaseFilter
and WhitespaceTokenizer
。
from org.apache.lucene.analysis.core import LowerCaseFilter, WhitespaceTokenizer
from org.apache.pylucene.analysis import PythonAnalyzer
class MyAnalyzer(PythonAnalyzer):
def __init__(self):
PythonAnalyzer.__init__(self)
def createComponents(self, fieldName):
# What do I write here?
你能帮我写和使用MyAnalyzer()
吗?
解决方案
from org.apache.lucene.analysis.core import LowerCaseFilter, WhitespaceTokenizer
from org.apache.pylucene.analysis import PythonAnalyzer
from org.apache.lucene.analysis import Analyzer
class MyAnalyzer(PythonAnalyzer):
def __init__(self):
PythonAnalyzer.__init__(self)
def createComponents(self, fieldName):
source = WhitespaceTokenizer()
result = LowerCaseFilter(source)
return Analyzer.TokenStreamComponents(source, result)
如果有人能指出我正确的方向以便能够正确找到这些答案,那就太好了。
推荐阅读
- c - 使用预处理器将外部函数指针更改为外部指针
- kubernetes - if else 中的 Helm 环境变量
- python - 在 VS 上无法进行 pipenv install --python3.9,显示异常
- context-free-grammar - 这个解析树是如何生成的?
- r - 如何在R中创建一列变量,指示特定日期之前和之后
- numpy - numpy - 元组在 numpy 中不是“(...)”吗?
- c# - 从自定义 Visual Studio 桌面应用程序保存/导出数据
- ios - Appcelerator Titanium iOS 后台服务停止 30 秒
- finance - Pinescript:如何获得最高,最低,sma,不包括特定时间范围?
- swift - 正交投影中的相机位置